Ha a szoftverfejlesztés, új technikák, nyelvek és fogalmak felbukkan minden alkalommal. Mindannyian érezzük ezeket a zsémbes kétségeket időnként: “tudok lépést tartani a változásokkal és versenyképes maradni?”Álljunk meg egy pillanatra, és foglaljunk össze egy sort a kedvenc filmemből, a Casablancából: “az alapvető dolgok az idő múlásával érvényesek.”
néhány hetente újra meglátogatjuk olvasóink kedvenc bejegyzéseit a webhely története során. Ezt az oktatóanyagot először 2012 áprilisában tették közzé.
ami igaz a szerelemre, az igaz a kódra is.
ami igaz a szerelemre, az igaz a kódra is. Az alapvető dolgok mindig érvényesek lesznek. Ha megérti a szoftverfejlesztés mögöttes ötleteit, gyorsan alkalmazkodik az új technikákhoz. Ebben az oktatóanyagban három alapelvet fogunk megvitatni, és még sok mással keverjük össze őket. Hatékony módszert biztosítanak a szoftver összetettségének kezelésére. Megosztom néhány személyes véleményemet és gondolatomat, amelyek remélhetőleg hasznosnak bizonyulnak, amikor kódra és valós projektekre alkalmazzák őket.
elv-ne ismételje meg magát
a komplexitás kezelhető egységekké történő csökkentésének alapvető stratégiája a rendszer darabokra osztása.
ezt az elvet annyira fontos megérteni, hogy nem írom kétszer! Általában a dry rövidítéssel említik, és Andy Hunt és Dave Thomas the pragmatikus programozó című könyvében merült fel, de maga a koncepció már régóta ismert. A szoftver legkisebb részeire utal.
amikor nagy szoftverprojektet épít, általában elárasztja az Általános összetettség. Az emberek nem képesek jól kezelni a komplexitást; jól tudnak kreatív megoldásokat találni egy adott hatókörű problémákra. A komplexitás kezelhető egységekké történő csökkentésének alapvető stratégiája az, hogy a rendszert hasznosabb részekre osztja. Először érdemes felosztani a rendszert összetevőkre, ahol minden összetevő a saját alrendszerét képviseli, amely mindent tartalmaz, ami egy adott funkció eléréséhez szükséges.
ha például tartalomkezelő rendszert épít, akkor a felhasználó kezeléséért felelős rész egy összetevő lesz. Ez az összetevő további részkomponensekre osztható, mint például a szerepkörkezelés, és kommunikálhat más összetevőkkel, például a biztonsági összetevővel.
ahogy a rendszereket komponensekre, továbbá komponenseket részkomponensekre osztod, elérsz egy olyan szintre, ahol a komplexitás egyetlen felelősségre redukálódik. Ezek a feladatok végrehajthatók egy osztályban (feltételezzük, hogy objektumorientált alkalmazást építünk). Az osztályok
metódusokat és tulajdonságokat tartalmaznak. A módszerek algoritmusokat valósítanak meg. Algoritmusok és-attól függően, hogy mennyire megszállottak akarunk lenni – a
algoritmusok alrészei kiszámítják vagy tartalmazzák a legkisebb darabokat, amelyek felépítik az üzleti logikát.
a száraz elv kimondja, hogy ezek a kis tudásdarabok csak pontosan egyszer fordulhatnak elő az egész rendszerben.
egyetlen reprezentációnak kell lennie benne.
minden tudásnak egyetlen, egyértelmű, hiteles ábrázolással kell rendelkeznie a rendszeren belül.
vegye figyelembe a különbséget a tudás és annak ábrázolása között. Ha az adatbázis-kapcsolatot implementáljuk a CMS-ben, akkor lesz egy kódrészletünk, amely initalizálja az adatbázis-illesztőprogramot, átadja a hitelesítő adatokat, és elmenti a hivatkozást a kapcsolatra egy változóban. A kódrészlet a tudás része, arról szól, hogyan érhető el valami. A kapcsolódásra hivatkozó változó ennek a tudásnak a reprezentációja – ezt más felek is használhatják. Ha az adatbázis hitelesítő adatai megváltoznak, akkor a kivonatot kell megváltoztatnunk – nem annak ábrázolását.
egy tökéletes alkalmazásban az üzleti logika minden apró darabja reprezentációba foglalja tudását, nevezetesen egy változóba vagy egy osztálytulajdonságba.
Ez a változó maga van beágyazva egy osztály, amely lehet leírni, mint egy képviselete a felelősség. Az osztály egy olyan komponensbe van beágyazva, amely a funkcionalitás ábrázolásaként írható le.
Ez addig folytatható, amíg el nem érjük a szoftverprojektünk legfelső szintjét – vagyis egy halom reprezentációt, amely egyre összetettebbé válik. A szoftver összetettségének ezt a módját moduláris architektúrának nevezik, amelynek fontos része a DRY.

szárazság elérése
a száraz egy filozófia, amely a logikát reprezentációkba csomagolja.
a szárazság elérésének számos módja van. Hunt és Thomas (többek között) kódgenerátorokat és adatátalakítókat javasolt. De lényegében a DRY egy filozófia, amely a logikát reprezentációkba csomagolja.
mivel az alkalmazás minden része reprezentációnak tekinthető, minden rész a mögöttes logika konkrét töredékeit tárja fel: a felhasználói menedzsment hozzáférést tesz lehetővé a CMS regisztrált felhasználóinak, a felhasználói osztály egyetlen felhasználót képvisel, és felfedi tulajdonságait (például a felhasználónév). Az adatbázis ábrázolásán keresztül lekéri a tulajdonságokat.
a száraz és moduláris architektúra jó tervezést igényel. Ahhoz, hogy alulról felfelé reprezentációs hierarchiát érjünk el, osszuk fel az alkalmazást logikailag elkülönített kisebb részek hierarchiájába, és hagyjuk, hogy kommunikáljanak egymással. Ha nagyobb projekteket kell kezelnie, akkor jó ötlet az összetevőkbe rendezése és a száraz használata az összetevőkön belül. Próbálja meg alkalmazni a következő szabályokat:
- készítsen vizuális hierarchiát a szoftveralkalmazásról, és térképezze fel a fő összetevőket. A komplex projektekhez minden alkatrészhez külön térképre lehet szükség.
- Ha a kapcsolódó felelősségek szintjére érkezik, érdemes átváltania UML diagramokra (vagy hasonlóra).
- mielőtt egy kóddarabot írna, nevezze meg annak hierarchiáját a szoftverprojektben. Határozza meg, hogy mit képvisel, és győződjön meg róla, hogy ismeri a szerepét a környező komponensben.
- határozza meg, hogy az ábrázolásnak mit kell kitennie más felek számára (például az SQL futtatásához szükséges funkciókat egy adatbázis-illesztőprogramban), és mit kell elrejtenie (például az adatbázis hitelesítő adatait).
- győződjön meg arról, hogy a reprezentációk nem támaszkodnak egy másik komplexitási szint reprezentációira (például egy olyan komponensre, amely egy másik komponens osztályára támaszkodik).
az adatbázis – illesztőprogram egy egyszerűsített példa, mivel sokkal több réteg vesz részt a valós világban (például egy adott adatbázis-absztrakciós réteg), és sokkal többet tehetünk a logika beágyazására-különösen a tervezési mintákba merülve. De még akkor is, ha csak most kezdted el a kódolást, egy dolgot kell szem előtt tartanod:
amikor azon kapod magad, hogy olyan kódot írsz, amely hasonló vagy egyenlő azzal, amit korábban írtál, szánj egy percet arra, hogy átgondold, mit csinálsz, és ne ismételd meg magad.
a Való Világban a 100% – ban száraz alkalmazásokat nehéz, ha nem lehetetlen elérni. Azonban az elfogadhatatlan mértékben nem száraz alkalmazások – ezért nehéz fenntartani – meglehetősen gyakoriak. Ezért nem meglepő, ha megtudjuk, hogy az összes szoftverprojekt több mint 50% – a kudarcot vall-ha megnézzük a kódot.
sokan hajlamosak azt gondolni, hogy a rossz kódot rossz kódolók állítják elő. Tapasztalatom szerint ez nagyon kivétel. Gyakrabban, mint nem, a rossz kódot rossz fiókkezelők állítják elő, és a vállalatok folyamatmenedzsmentjének általános hibás konfigurálása.
a rossz kódot ritkán állítják elő rossz kódolók.
egy példa
a szárazság jó tervezéssel érhető el.
például tegyük fel, hogy MŰSZAKI tanácsadóként vesz fel egy olyan vállalat, amelynek problémái vannak a kód minőségével és karbantartásával. Átnézi a forrást, és látja a hackeket és a kód duplikációját – a kód nem száraz. Ez a rossz kódminőség tünete, nem ez az oka. Ha megnézzük a verziókezelő rendszert – más néven a kód történetét -, akkor valószínű, hogy olyan hackeket találhat, amelyeket időnként határidők és mérföldkövek közelében vezettek be. Szánjon időt arra, hogy ellenőrizze, milyen változások történtek, és valószínűleg szembesülni fog a követelmények változásával.
mint fentebb megjegyeztük, a szárazság jó tervezéssel érhető el. A kemény határidőre kényszerített változások arra kényszerítik a fejlesztőket, hogy piszkos megoldásokat hajtsanak végre. Amint a kód veszélybe kerül, a szárazság elvét valószínűleg teljesen feláldozzák a további változások után.
oka van annak, hogy az informatikai üzletág legsikeresebb vállalatait nagyon jó technikai ismeretekkel rendelkező emberek – vagy akár maguk a kódolók-alapították: Bill Gates, Mark Zuckerberg, Steve Wozniak, Steve Jobs, Larry Page, Sergey Brin és Larry Ellison tudják (vagy tudták), milyen erőfeszítésekre van szükség valami megvalósításához. Ezzel szemben sok vállalat hajlamos arra, hogy a mérnöki követelményeket a számlakezelők kezébe, a fogalmi részt pedig az üzleti tanácsadók kezébe helyezze…emberek, akik soha nem hajtottak végre semmit.
ezért sok technikai koncepció csak Powerpoint, Photoshop és 27″ szélesvásznú kijelzőn működik. Lehet, hogy ez sikeres megközelítés volt a napokban, többé-kevésbé, statikus webhelyek, de manapság nem az – interaktív alkalmazásokkal több eszközön. Mivel a kódolók az utolsók a sorban, nekik kell gyors javításokat alkalmazniuk a koncepció hibáira. Ha ezt egy fiókkezelő kíséri, aki nem tud ellenállni egy olyan ügyfélnek, aki szereti az utolsó pillanatban változtatni, a terveket a szemétbe dobják, és valami gyors és piszkos végrehajtásra kerül. A kód unDRY lesz.
Ez a példa egy kicsit szélsőséges (ennek ellenére tanúja voltam ilyen forgatókönyveknek), de bizonyítja, hogy a DRY egy elméleti koncepció, amelyet a Való világ különböző pártjai megkérdőjeleznek. Ha olyan cégnél dolgozik, amely arra kényszeríti Önt, hogy ilyen módon dolgozzon, javasolhat néhány változtatást a folyamatban (például technikai szakértelem bevezetése a műszaki projektek korábbi szakaszában).
Ha van egy hands-off megközelítés, Olvass tovább! A nem lesz rá szükséged elv meg fog menteni.
Principle – Keep it Simple Stupid
a legegyszerűbb magyarázat általában a megfelelő.
a 19.század végén a fizikusok megpróbálták megmagyarázni, hogy a gravitáció, a mágnesesség és az optika hogyan hat egymásra, amikor nagy távolságokról van szó – például a naprendszerünkben lévő távolságokról. Ezért egy aether nevű közeget feltételeztek. Azt mondták, hogy a fény áthalad ezen a közegen, és felelős azokért a hatásokért, amelyeket másképp nem lehet megmagyarázni. Az évek során az elméletet olyan feltételezésekkel bővítették, amelyek az éter posztulátumot a kísérletek eredményeihez igazították. Egyes feltételezések önkényesek voltak, mások más problémákat vetettek fel, és az egész elmélet meglehetősen összetett volt.
a svájci Szabadalmi Hivatal egyik alkalmazottja, Albert Einstein azt javasolta, hogy szabaduljon meg az egész éterelmélettől, amikor egy egyszerű, mégis forradalmi ötletet vezetett be: a nagy távolságokkal történő számítás minden furcsasága elhalványulna, ha elfogadnánk, hogy az idő nem állandó, hanem relatív. Ez a hihetetlenül Out-of-the-box gondolkodás, hogy jöjjön a legegyszerűbb magyarázat a legkevesebb feltételezések közötti választás versengő forgatókönyvek nevezik Ockhams borotvája.
sok területen vannak hasonló fogalmak. A szoftverfejlesztésben (és másokban) KISS-nek nevezzük. Ennek a rövidítésnek számos változata létezik, de mindegyik azt jelenti, hogy törekednie kell a legegyszerűbb módszerre.

HTTP
a hipertext átviteli protokollt széles körben tekintik tökéletes példának egy egyszerű megoldáshoz: úgy tervezték, hogy át hipertext alapú dokumentumok, ez a gerincét rendkívül interaktív és asztali-szerű alkalmazások manapság. Lehet, hogy megoldást kell találnunk a protokoll korlátozásaira, és talán egyszer ki kell cserélnünk. A status quo azonban: néhány kérési módszer (például GET és POST), állapotkódok és egyszerű szöveges argumentumok alapján a HTTP rugalmasnak és robusztusnak bizonyult. Ez az oka annak, hogy a HTTP-t a webfejlesztők többször is a határokhoz szorították – és még mindig áll.
ezt a megközelítést magától értetődőnek vesszük, de a szoftverfejlesztés és a szabványosítás története tele van túlságosan összetett és félig sült megoldásokkal. Van még egy dedikált kitalált szó is: bloatware. Szoftver, mint ez is le, hogy DOD, halott érkezéskor. Van egy elméletem, amely nagyon hasonlít az unDRY kód elméletemhez, amikor a bloatware-ről van szó … Az internet sikere azonban az egyszerű, mégis hatékony megoldások sikereként írható le.
tehát mi szükséges a lehető legegyszerűbb megoldáshoz? Mindez a szoftverfejlesztés karbantarthatóságán és érthetőségén múlik. Ennélfogva, KISS beindul a követelmények tervezésének szakaszában. Amikor arra gondolsz, hogyan alakíthatod át az ügyfél követelményeit megvalósítható komponensekké, próbáld meg azonosítani a következő részeket:
- funkcionalitás, amely nem megfelelő arányban van az előnyök és az erőfeszítések között.
- funkcionalitás, amely nagymértékben függ más funkcióktól.
- funkcionalitás, amely valószínűleg növekszik a komplexitásban.
sok ember vesz részt a fogalmi folyamatban, akik nem rendelkeznek a műszaki szakértelemmel a megbízható költség-haszon elemzés elvégzéséhez
egyszer dolgoztam egy projekten, ahol az ügyfél Excel táblázatokat akart importálni a személyzetkezelő szoftverébe. Ez egyértelmű egyezés volt. Az Excel egy szabadalmaztatott szoftver, összetett dokumentumformátummal. A formátum összetett, mert funkciókban gazdag: grafikonokat és más dolgokat is hozzáadhat – olyan funkciókat, amelyekre az ügyfélnek nem volt szüksége. Egyszerűen csak a számok érdekelték. Így az Excel Importálás végrehajtásához sok felesleges funkció végrehajtására lenne szükség. Ráadásul az Excel verzióinak több verziója is létezik, és a Microsoft minden évben újabb kiadást indít. Ezt nehéz lett volna fenntartani, és a jövőben további költségekkel jár.
végül vesszővel elválasztott értékű importálást hajtottunk végre. Ez néhány sornyi kóddal történt. Az adatok költsége nagyon kicsi volt (hasonlítsa össze az Excel lapot a CSV-ekvivalensével), és a megoldás karbantartható és jövőbiztos volt. Az Excel egyébként készen állt a CSV exportálására (valamint más olyan programokra, amelyeket az ügyfél a jövőben használni szeretne). Mivel a megoldás is olcsó volt, a KISS elv jó alkalmazása volt.
összefoglalva: próbálj meg gondolkodni a dobozon kívül, ha egy feladat bonyolultnak tűnik számodra. Ha valaki elmagyarázza neked a követelményeit, és azt gondolod, hogy nehéz és összetett lesz végrehajtani, akkor szinte minden körülmények között igazad van. Míg néhány dolog csak ilyen-nehéz megvalósítani-a túlbonyolított megoldások meglehetősen szokásosak. Ez azért van így, mert sok olyan ember vesz részt a fogalmi folyamatban, akik nem rendelkeznek a megbízható költség-haszon elemzés elvégzéséhez szükséges műszaki szakértelemmel. Ezért nem látják a problémát. Ellenőrizze még egyszer a követelményeket, hogy valóban lecsupaszították-e azokat a lényegre, amelyre az ügyfélnek szüksége van. Szánjon időt a kritikus pontok megvitatására, és magyarázza el, miért lehetnek más megoldások megfelelőbbek.
elv – “nem lesz rá szükséged
A kódolás a dolgok építéséről szól.
amikor a Google+ elindult, Mark Zuckerberg – a Facebook alapítója – az elsők között hozott létre egy fiókot a közösségi hálózatban, amelynek célja a saját levétele volt. Csak egy sort adott hozzá a rólam szakaszhoz: “dolgokat építek.”. Őszintén hiszem, hogy ez egy ragyogó mondat, mert néhány egyszerű szóval leírja a kódolás tiszta lényegét. Miért döntött úgy, hogy kódoló lesz? Lelkesedés a műszaki megoldások iránt? A hatékonyság szépsége? Bármi legyen is a válaszod, lehet, hogy nem “az 1.000 építése.001. vállalati weboldal szabványos funkcionalitással”. A legtöbben azonban így keresnek pénzt. Nem számít, hol dolgozik, akkor valószínűleg szembe unalmas és ismétlődő feladatok hébe-hóba.
a szoftverprojektre fordított idő 80% – át a funkcionalitás 20% – ára fordítják.
a You ain ‘ t gonna need it principle (YAGNI) ezekkel a feladatokkal foglalkozik. Ez alapvetően fordítja: ha ez nem a koncepció, ez nem a kódot. Például általános gyakorlat, hogy az adatbázis-hozzáférést egy olyan rétegben absztrakt, amely kezeli a különböző illesztőprogramok, például a MySQL, a PostgreSQL és az Oracle közötti különbségeket. Ha olyan vállalati webhelyen dolgozik, amelyet egy LAMP-verem, egy megosztott gazdagép tárol, mennyire valószínű, hogy megváltoztatják az adatbázist? Ne feledje, hogy a koncepciót a költségvetés szem előtt tartásával írták.
Ha nincs adatbázis-absztrakció költségvetése, akkor nincs adatbázis-absztrakció. Ha az adatbázis-változás valószínűtlen eseménye bekövetkezik, természetes dolog a változtatási kérelem felszámítása.
lehet, hogy észrevetted a különbséget a You ain ‘ t gonna need it és a száraz hajtású moduláris architektúrák között: az utóbbi csökkenti a komplexitást azáltal, hogy egy projektet kezelhető komponensekre osztanak, míg az előbbi csökkenti a komplexitást az összetevők számának csökkentésével. A YAGNI hasonló a KISS elvhez, mivel egyszerű megoldásra törekszik. KISS azonban egyszerű megoldásra törekszik azzal, hogy megpróbál valamit a lehető legkönnyebben megvalósítani; YAGNI az egyszerűségre törekszik azzal, hogy egyáltalán nem hajtja végre!
Theodore Sturgeon, egy amerikai sci-fi szerző, kijelentette a törvényt: “minden kilencven százaléka szar”. Ez egy nagyon radikális megközelítés, és nem túl hasznos a valós projektekben. De ne feledje, hogy a” szar ” nagyon időigényes lehet. Jó ökölszabály: a szoftverprojektre fordított idő nagyjából 80% – át a funkcionalitás 20% – ában fektetik be. Gondoljon a saját projektjeire! Minden alkalommal, amikor megteszem, meglep a 80:20 szabály pontossága.

Ha olyan cégnél dolgozik, amely hírhedt a szűk határidőkről és a pontatlan koncepciókról, ez egy hatékony stratégia. Nem kap jutalmat az adatbázis-absztrakciós réteg megvalósításáért. Valószínű, hogy a főnöke nem tudja, mi is az adatbázis-absztrakciós réteg.
bár ez a koncepció egyszerűnek tűnhet, nehéz lehet megkülönböztetni a szükségeseket a felesleges részektől. Ha például jól érzi magát egy adatbázis-absztrakciót használó könyvtárral vagy keretrendszerrel, akkor nem fog sok időt megtakarítani annak eldobásával. A kulcskoncepció a szoftverek másik módja: arra képeztek ki minket, hogy jövőbiztos és karbantartható szoftvereket írjunk. Ez azt jelenti, hogy felkészültek vagyunk arra, hogy előre gondolkodjunk. Milyen változások történhetnek a jövőben? Ez kritikus a nagyobb projekteknél,de a kisebbeknél a rezsi. Ne gondolj a jövőbe! Ha egy kis vállalati webhely alapvető változásokat hajt végre, akkor lehet, hogy a semmiből kell kezdeniük. Ez nem jelent jelentős problémát a teljes költségvetéshez képest.
projekt tervezése
amikor elkészíti a teendők listáját egy projekthez, vegye figyelembe a következő gondolatokat:
- alacsonyabb komplexitás elérése az absztrakció szintjének csökkentésével.
- válassza el a funkciókat a funkcióktól.
- mérsékelt nem funkcionális követelményeket feltételez.
- azonosítsa az időigényes feladatokat, és megszabaduljon tőlük.
menjünk egy kicsit a részletekbe! Már adtam egy példát a lista első elemére: ne tekerje az adatbázis-illesztőprogramot egy adatbázis-absztrakciós réteg köré. Legyen gyanús minden, ami növeli a komplexitás a szoftver verem. Vegye figyelembe, hogy az absztrakciót gyakran harmadik fél könyvtárai biztosítják. Például-a programozási nyelvtől függően-egy perzisztencia réteg, mint a Hibernate (Java), Doctrine (PHP) vagy Active Record (Ruby) adatbázis-absztrakcióval és objektum-relációs leképezéssel érkezik. Minden könyvtár összetettséget ad. Fenn kell tartani. Frissítéseket, javításokat és biztonsági javításokat kell alkalmazni.
minden nap megvalósítjuk a funkciókat, mert arra számítunk, hogy hasznosak lesznek. Ezért előre gondolkodunk és túl sokat hajtunk végre. Például sok ügyfél szeretne mobil webhelyet. A mobil a széles megértés kifejezése; ez nem tervezési döntés. Ez egy használati eset! Azok az emberek, akik mobil weboldalt használnak, jól, mobil. Ez azt jelenti, hogy más információkhoz vagy funkciókhoz is hozzáférhetnek, mint egy olyan felhasználó, aki az asztalon fekvő webhelyet látogatja meg. Gondolj egy mozi oldalra: a buszon lévő felhasználók valószínűleg a közelgő filmek kezdési idejét akarják elérni, nem pedig az 50 MB-os pótkocsit.
a rossz fogalmak gyakran azonosíthatók a nem funkcionális követelmények hiányával.
megfelelő költségvetéssel külön elemzést végezne a mobilkövetelményekről. Ezen elemzés nélkül egyszerűen ugyanazokat az információkat adja meg, mint az asztali webhelyen. Ez sok esetben rendben lesz! Mivel a mobil böngészők nagyon ügyesen állítják be az asztali webhelyeket a kijelzőjükhöz, radikális yagni megközelítés lehet, hogy egyáltalán nem írnak mobil webhelyet!
a nem funkcionális követelmények nem egy szoftver viselkedését írják le, hanem további tulajdonságokat írnak le, amelyek felhasználhatók a szoftver minőségének megítélésére. Mivel a szoftver minőségének leírása feltételezi a szoftverekkel kapcsolatos ismereteket, a rossz fogalmakat gyakran a nem funkcionális követelmények hiányával lehet azonosítani. A karbantarthatóság, a dokumentáció szintje és az integráció egyszerűsége példák a nem funkcionális követelményekre. A nem funkcionális követelményeknek mérhetőnek kell lenniük. Ezért” az oldalnak gyorsan be kell töltenie.”túl meggyőző”, az oldalnak két másodperc alatt kell betöltődnie max egy átlagos teljesítményteszt során.”nagyon konkrét és mérhető. Ha a YAGNI-elvet szeretné alkalmazni, akkor feltételezzen mérsékelt nem funkcionális követelményeket, ha azokat nem említik a koncepcióban (vagy ha megemlítik őket, de nem konkrétak). Ha maga írja a nem funkcionális követelményeket, legyen reális: egy napi 20-50 oldallátogatással rendelkező kisvállalkozás nem igényel három napos teljesítmény – módosítást-mivel az oldalnak elég gyorsan kell betöltődnie, mert a szerver nincs elfoglalva. Ha a vállalat növelheti a napi látogatások számát, akkor egy jobb szerver vagy tárhelycsomag nem lehet túl drága.
végül, de nem utolsósorban, ne feledje, a 80:20 szabály-of-hüvelykujj!
végül, de nem utolsósorban, ne feledje, a 80:20 szabály-of-hüvelykujj! Meg kell határoznunk az időigényes részeket. Ha egy rész feltétlenül szükséges, akkor végre kell hajtania. A kérdés a következő: hogyan fogja végrehajtani? A legújabb keretnek kell lennie egy kis közösséggel? Át kell váltania a könyvtár éppen kiadott verziójára, ha a dokumentáció nem naprakész? Ha az új CMS-t használja, ha nem minden kiterjesztés érhető el? Mennyi kutatásra lesz szükség ehhez? “Mindig is így csináltuk.”nem izgalmas megközelítés, de meglepetések nélkül elvégzi a munkát.
fontos megérteni, hogy mindez nem jelenti azt, hogy elkezdhetsz piszkos kódot írni hackekkel az út mentén! Könnyű alkalmazást írsz, nem rendetlen! Azonban, akkor nem kell ez egy gyakorlati megközelítés. Ha ez okozna sok sornyi kódot, hogy csökkentse néhány sornyi kód ismétlődések, én személy szerint úgy gondolom, hogy akkor kapcsolódnak erőfeszítéseket költségvetési és néhány unDRYness rendben van. Ez egy kis alkalmazás. Ezért a hozzáadott karbantartási komplexitás elfogadható. A való világban vagyunk.
térjünk vissza az inital gondolathoz: szeretünk dolgokat építeni. Amikor Beethoven írta a Diabelli variációkat, Szerződéses munka volt. Nem hiszem, hogy kompromisszumokat kötött a költségvetéssel kapcsolatban. Futott az extra mérföldet, mert nem akart átlagos zenét írni; tökéletes kompozíciót akart írni.
természetesen nem arra utalok, hogy mindannyian zsenik vagyunk, és hogy ragyogásunknak minden kódsoron át kell ragyognia, de szeretek a szoftverarchitektúrára kompozícióként gondolni. Szenvedélyes fejlesztő vagyok, mert tökéletes kompozíciókat akarok építeni, és büszke akarok lenni azokra a dolgokra, amelyeket építek.
ha tapasztalt és üzleti szempontból megbízható fejlesztő akarsz lenni, el kell sajátítanod a nem lesz rá szükséged elvet. Ha meg akarja tartani a szenvedélyét, hébe-hóba küzdenie kell ellene.
Összegzés
a szoftver alapelvei a szoftverek vizsgálatának egyik módja. Számomra egy jó elvnek egy egyszerű koncepción kell alapulnia, de más technikákkal és filozófiákkal való szembenézés során összetett eszmekonstrukcióvá kell fejlődnie. Melyek a kedvenc szoftver alapelvei?