tag:blogger.com,1999:blog-3408745507091232422.post2014808158098481362..comments2023-03-05T06:57:23.320+01:00Comments on Robert Dresler: Jednoduchá složitost nebo složitá jednoduchostRobert Dreslerhttp://www.blogger.com/profile/16401744220939465418noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-3408745507091232422.post-38901235918154553142023-02-09T06:01:55.124+01:002023-02-09T06:01:55.124+01:00Каждый, у кого есть инстаграм аккаунт, хочет, чтоб...Каждый, у кого есть инстаграм аккаунт, хочет, чтобы его учетная запись была наиболее успешной и востребованной. Достижение подобных результатов может оказаться сложным, в случае если применять только естественные виды получения популярности - <a href="https://krutiminst.ru/" rel="nofollow">накрутка лайков в инстаграме ru</a>. KRUTIMINST.RU - это сайт, позволяющий наращивать количество подписчиков, лайков, просмотров и комментариев в Instagram.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-58435307074315077972016-10-25T21:40:49.771+02:002016-10-25T21:40:49.771+02:00Ahoj Svaťo,
díky za komentář. Fajn řešení. Měl by...Ahoj Svaťo,<br /><br />díky za komentář. Fajn řešení. Měl bych k němu pár připomínek na zamyšlení:<br />- Zdá se mi, že factory toho ví příliš hodně. Obsahuje totiž definici všech pravidel. Možná tak porušuje SRP ze SOLID.<br />- OCP ze SOLIDu nám říká, že každá případná změna by měla mít co nejmenší dopad na stávající implementaci. Měla by ji ideálně pouze rozšiřovat. Tento princip se často zajišťuje právě separací do samostatných tříd. Přidat nové pravidlo ve tvém případě znamená rozšířit rozhranní RuleFactory o metodu createNewRule() a naimplementovat ji. Při mém řešení F by vznikla nová třída NewRule a NextGenerationStateCalculatorF by jen přidal instanci této třídy do _rules.<br /><br />Pokud by pravidla v F byla definována jako disjunktní (museli bychom upravit implementaci NoReproductionRule), pak by na pořadí nezáleželo a mohli bychom využít IoC container a dependency injection:<br /><br />public NextGenerationStateCalculatorF(IEnumerable rules)<br />{<br /> _rules = rules;<br />}<br /><br />V takovém případě bychom změny při přidání nového pravidla provedli jenom v příslušných XRule třídách. A v NextGenerationStateCalculatorF by k žádné změně nedošlo.<br /><br />Robert Dreslerhttps://www.blogger.com/profile/16401744220939465418noreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-25966069904967128122016-10-25T11:22:30.901+02:002016-10-25T11:22:30.901+02:00Ahoj,
co říkáš na další zamyšlení nad kódem? Jedn...Ahoj,<br /><br />co říkáš na další zamyšlení nad kódem? Jednotlivé implementace `RuleBase` nijak nespecifikují jeho chování, jde podle mě o zneužití dědičnosti. Přijde mi, že potřebujeme jen pravidlo konfigurovat, ale neměnit jeho chování (ponechme stranou, že žádné pořádné chování nemá).<br /><br />Co kdyby existovala `Rule`, která bude mít stejnou funkcionalitu jako `RuleBase`, jen nebude abstraktní? Tím by šla sama o sobě i otestovat.<br /><br />Jednotlivá pravidla pak může tvořit továrna. Kód nebude tratit na přehlednosti, nebudeme zneužívat dědičnost a snížíme počet tříd.<br /><br />Výsledek by mohl vypadat cca takto:<br /><br /> _rules = new RuleBase[]<br /> {<br /> ruleFactory.createUnderPopulationRule(),<br /> ruleFactory.createSurvivalRule(),<br /> ...<br /> }<br /><br />class RuleFactory {<br /><br /> public createUnderPopulationRule(): Rule {<br /> return new Rule((state, neighbours) => state == CellState.Dead && neighbours == 3, CellState.Live);<br /> }<br /><br /> ...<br />}<br /><br />SvaťaAnonymoushttps://www.blogger.com/profile/16306668769992193336noreply@blogger.com