Как провеждам моделиране на домейни

От древни времена - имам предвид, наистина древни, чак преди Платон, Аристотел и всички, хората са се забавлявали с фантастичен въпрос: от какво се състои светът? Каква е реалността около нас? Какво има там? Какво е Защо?

самохин

Обекти

Има ябълки и портокали, а там е ябълката пред мен. Има вторник и седмици, а днес е вторник и в хладилника ми има седем авокадо. Има честност и има конкретни хора, които са честни.

Имоти

Изглежда, че има конкретни предмети, като тази ябълка пред мен, и има начини тези предмети да бъдат като червени, сладки и легнали на масата. ...

Прочетете повече · 7 минути четене

24 март 2019 г.

Те споделят едни и същи принципи по сърце

Миналата година написах статия за InfoQ, където споделих своите предположения за общи черти между SOA, XP и OOP. Напоследък ме поразява колко много са общи историите и обектите на потребителите.

На първо място, потребителската история е обект

Точно както всичко друго. Моят потребителски интерфейс изглежда така:

Моята идеална потребителска история изглежда като набор от декларативни декоратори с един-единствен оператор за връщане: някои основни обекти се декорират, докато не се постигне желаното поведение, посочено под формата на критерии за приемане.

Нека разгледаме пример от foodtech. Клиент изпраща заявка за регистрация на поръчка до моята служба чрез приложение или браузър. Има редица неща, които трябва да се направят. На първо място, трябва да се изчисли най-близкият ресторант, от който трябва да се достави поръчка. След това поръчката трябва да се запази в база данни и след това да се изпрати до ресторант. Тези стъпки са поведения, специфични за определени обекти, всеки от които представлява определен аспект на поръчка, която трябва да бъде регистрирана. ...

Прочетете повече · 3 минути четене

Публикувано в codeburst

· 10 март 2019 г.

Обектите са достатъчно

Не говоря за глобално изменяемо състояние, това е твърде лесно. Имам предвид всякакви глобално достъпни статични данни, които са неизменни.

Преди време прочетох книга за Smalltalk и това ме накара да погледна концепцията за данните от различен ъгъл. Като чист OOP език, (почти) всичко е обект в Smalltalk. Със сигурност можете да създадете публично видима променлива на класа, но това просто не е начинът, по който се правят нещата там.

Има няколко начина за представяне на данни за многократна употреба във вашата програма. Най-популярните са въвеждането на публична константа и създаването на конфигурационен файл. Color.RED, ContentTypeHeader.JSON, Math.PI, translation.fr.yaml - всички те изглеждат добре и добре. ...

Прочетете повече в codeburst · 5 минути четене

Публикувано в HackerNoon.com

· 26 август 2018 г.

и ето защо.

Нека повторя: gitflow е просто лош хак с разклоняване, показващ ниско ниво на инженерните практики на вашия екип.

Добре, преди да ме изядете жив, нека да обясня.

Кратка субективна история на системите за контрол на версиите

Дни преди vcs
Отделно развитие, основано на всичко, освен на функции, което доведе до интеграционен ад, който може да продължи години.

SVN
SVN ме хвана на двадесет години и моята култура на кодиране очевидно беше по-ниска от сегашната. Не написах модулни тестове, моят ООП беше лош, не знаех нито за SCRUM, нито за други гъвкави подходи, но едно нещо, което SVN ме научи, беше отговорността. Не можах да проверя кода, който не работи. ...

Прочетете повече в HackerNoon.com · 6 минути четене

Публикувано в HackerNoon.com

· 6 август 2018 г.

отказ от отговорност: това е така, защото поставяте бизнес логика в класове за услуги

Наскоро попаднах на публикация, разказваща за опита на автора с микроуслугите. Опитът беше доста негативен, но причината беше толкова типична и фундаментална, че реших да напиша последващ пост. Но преди да говорим за самите микроуслуги, нека започнем с проблем от по-ниско ниво.

Как изглежда процедурният начин на мислене

Това, което различава процедурния начин на мислене от OOP, е когато използвате първия, който третирате програмата си като последователност от стъпки, извършващи някакво действие върху данните. Следователно данните и поведението са неразривно свързани.

Помислете за следния пример. Вашата система получава заявка за транзакция с карта с регистър. Първо трябва да го валидирате, след това да обработите някои бизнес правила (в случай, че правите разлика между валидиране и бизнес правила), след това да изпратите http-заявка до някаква външна платежна услуга, след това да анализирате нейния отговор и след това, въз основа на резултата, да извършите изведете някаква бизнес-логика - например изпратете имейл до клиент и запомнете карта. ...

Прочетете повече в HackerNoon.com · 5 минути четене

Публикувано в HackerNoon.com

· 26 май 2018г

и фондация зад тях

Нека започнем с екстремно програмиране

Обичам да съпоставям принципите на SOLID с принципите на XP. Само за да ви напомня, пълната XP верига се формира от ценности, принципи и практики - точно в този ред, от най-основните елементи до производни. Ценностите са това, което ни движи, това, което ни определя и поведението ни. Принципите са определени правила, които отговарят на ценностите. Практиките са някои дейности, основани на принципи. Нито принципите, нито практиките нямат смисъл без ценности.

Ако SOLID са само принципи, какви са ценностите?

Преди да се задълбоча в тази философска дискусия, искам да кажа какъв мисловен образ виждам, когато чуя думата „програмен код“ - поне когато съм въвлечен в изпълнението на логиката на домейна. За мен програмният код е представяне на бизнес процеси в някакъв програмен език. В идеалния случай има биекция между тях. Това е бизнес-ИТ подравняване, което се проявява в по-ниско ниво от SOA - в програмен код. Ето защо OOP е по-подходящ за това, отколкото, да речем, процедурно програмиране: той разполага с всички инструменти за представяне на обекти от домейните на реалния живот. Да, говоря за обекти. Така че моделирането на правилни абстракции, представляващи процеси от реалния живот, очевидно е най-съществената част в обектно-ориентираното разработване на софтуер. ...