JavaRush /Java Blog /Random-TK /Robert Martin, Arassa kod. Döredijiler üçin “kung fu kody...
Artem Murk
Dereje
Днепр

Robert Martin, Arassa kod. Döredijiler üçin “kung fu kody” atly kitaba syn

Toparda çap edildi
Salam Javaraşewitler! Bu makala, Robert Martiniň "Arassa kod" kitabyna syn. Bilelikde koduňyzy gowulandyrmagyň we optimizirlemegiň ýollaryna serederis we ahyrynda size kiçijik, ýöne gyzykly bir mesele garaşýar.
Robert Martin tarapyndan "Arassa kod".  Döredijiler üçin “kung fu kody” atly kitaba syn - 1
Her gün kod redaktoryňyzy açanymyzda köp synplar, funksiýalar we üýtgeýjiler bilen ýüzbe-ýüz bolýarys. Iň oňat warianty, bu kody başdan başlap ýazylan bolsa, bir gezek ýazylan bolsa, onda setirler az bolsa, ýeke özi işleýärsiňiz, üýtgetmeler ýok we müşderiniň goldawy ýok. UTöne! Amalyň görkezişi ýaly, hawa, munuň bolmajakdygyna özüňiz düşünýärsiňiz. Esasan, toparymyzyň agzalary bilen nädip aragatnaşyk saklamaly, “hindi” koduny saklamaly we önümleri millionlarça setirlere bölmeli bolarys. Okuw kärdeşlerimden şuňa meňzeş jogaplary köplenç eşitdim: “Bu kod men tarapyndan ýazyldy we hiç kime görkezjek däl”, ýöne şeýle kod bilen Kömek üçin kömek haýyşlaryny görenimde gaty uzaga çekýär. Adamyň maňa näme diýmek isleýändigini öwrenmek we düşünmek üçin wagt (käwagt hakykatdanam uzak wagt), hatda “pozuň we täzeden ýazyň” diýesim gelýär! Size kömek etmek, dogry ýazmak isleýän adamlaryň wagtyna we güýjüne baha beriň, nädip bilmeseňiz, öwrenmek hiç wagt giç däl. Robert Martiniň kitaby, Java-da köp mysallary öz içine alýan bu formatdaky kitaplaryň arasynda tapawutlanýar. Bu meniň tarapymdan birneme fanatik söz bolup biler, ýöne OOP stilinde, ýagny bölekleriň we bölümleriň ýazylyşynda ýazylypdy. Düşünmek we okamak aňsat, kitaby ýolda ýa-da agşam ýatmazdan öň okamak aňsat. Arassa kod 3 bölege bölünýär. Birinji bölümde, kitabyň teoriýasyny öwrenip, dizaýn nagyşlaryny we edep-terbiýe düzgünlerini öwrenmegimiz haýyş edilýär. Ikinji bölüm bizi gaýtadan işlemek we ýazmak bilen meşgullanmaga çagyrýar, üçünji bölüm bolsa mysallarda “ys” kodunyň jemleýji mazmuny. Dogrusy, awtor size esasan Java Core bilimleri gerek boljak köp mowzuk barada durup geçdi, ýöne JUnit Unit Tests, Log4j Logging, dizaýndaky iň ýönekeý nagyşlary bilýän bölümlerem bar (ýöne ýokarda aýdyşym ýaly ýok) olaryň köpüsi we düşnüksiz hemme zady üstünlikli gözläp bolýar, hawa we JavaRush kursynda analiz edip bolýar). Kitabyň ähli bölümleri biri-biri bilen baglanyşykly däl; halaýan bölümiňizden üstünlikli okap bilersiňiz. Kitapdan alan esasy pikirlerimiň gysgaça mazmuny. Bu sözlere öz garaýşyňyzy paýlaşyp biljek teswirleriňiz üçin minnetdar bolardym.

1. Teswirler == erbet.

Köplenç teswirler, erbet kodumyzy ýapmaga synanyşýan taýaklarymyzdyr. Käbir ýagdaýlarda, yzygiderli kod refaktory bar bolsa, usullaryň ýa-da üýtgeýänleriň maksady barada ýalan sözleýärler.

2. Düşündiriş kody, öli kody.

Bu kod böleklerini programmaňyzda goýmak zibil bilen deňdir. Ulanylmaýan kod wagtyň geçmegi bilen ýygnanýar we programmaňyzyň arassalygyna päsgel berýär, wagtal-wagtal şeýle modullaryň koduny barlaň.

3. Usullaryň, synplaryň we üýtgeýänleriň sözbaşylary.

Bu temany ara alyp maslahatlaşmak üçin aýratyn makalalar gerek. Lazalta bolmaň we maksadyny aýdyp biljek atlary ýazmaň. Orfografiki atlarda käbir standartlary öwreniň. Bu mowzuk jikme-jik öwrenmek üçin “bolmaly”.

4. Her usulyň we üýtgeýjiniň synp iýerarhiýasynda öz orny bar.

Adatça, synpda üýtgeýjiler we usullar (statik we statik däl), konstruktor, höwürtgelenen we içki synplar we sanlar bolup biler. Gysgaça aýdylanda, köp maglumat bar we her kimiň synpdaky ornuny kesgitlemek zerur. Java ýadro synplaryna seretseňiz, gurluşyň aýdyň gurluşlydygyny görersiňiz, her bölegini öz ýerinde görüp bileris, elbetde taslamalaryňyzda taslamanyň içinde üýtgäp biler, ýöne her synpda däl. Özüm üçin aşakdaky gurluşyk gurluşyny kesgitledim: Synpyň başynda statiki üýtgeýänler bar, soň obýekt üýtgeýjileri + Enums bar bolsa. Üýtgeýjilerden soň synp konstruktorlaryny kesgitleýärin. Soň synp bilen işlemegiň usullaryny ýazýaryn. Usullardan soň getterleri we sazlaýjylary ýazýaryn. Iň soňunda bolsa içki synplarym bar. Gurluşymy ulanyp ýa-da teswirlerde özüňiz ýazyp bilersiňiz.

5. Usullaryň abstraksiýa derejeleri.

Meniň üçin bu 1-nji açyş. Her usul abstraksiýanyň diňe bir derejesinde operatorlary öz içine alýar. Köp derejeli amallary birleşdirmeli däl.

6. roralňyşlyk bilen işlemek.

Taslamada ulanmak has gowudyr ýa-da barlanmadyk kadadan çykmalar (näme pikir edýärsiňiz ?, Teswir ýazyň)? Barlananlaryň tarapdary, ýöne kitap daşyndan barlanmadyk kadadan çykmalara seretmäge kömek edýär. Hakykatdanam, barlanmadyk kadadan çykma, esasanam kadadan çykmalaryň birbada birnäçe gatlagy “deşýändigini” göz öňünde tutup, usul goluny üýtgetmeýär. Iň kiçi üýtgeşmäniň oňaýsyzlygy, tutulmazdan ozal ähli usullar zynjyrynyň täzeden kesgitlenmegine getirýär, bu köp halatlarda ösüş üçin gaty amatsyz.

7. Kod formaty.

Dogry formatlanan kod diňe düşnükli bolman, eýsem ýokary okalýan hem. Garaşmalar we içindäki hereketler barada derrew düşünje alarsyňyz. Şertleriň mysalyny ulanyp, başga bir zat gursaňyz, hemme zady bir setirde ýazmaly dälsiňiz, uzyn zynjyrlary süýşürmek has gowudyr.

8. inagdaýdaky negatiwlikler.

Şertlerde inkär etmekden saklanmaga synanyşyň, bu has köp psihologiki faktor, beýnimiz inkär etmegi gowy duýmaýar we hawa! aňlatmazdan ozal. Mysal üçin, (! Condition.isTrue) usuly täzeden ýazmak has gowudygyny inkär etmek, bu ýaly ýagdaýy has aňsatlaşdyrar (condition.isFalse)

9. Funksiýalar bir amal etmeli.

Usulyňyz köp amallary ýerine ýetirýän bolsa, olary bir gezeklik usullara bölüň. Bu usullary goldamak gaty aňsat, synag etmek aňsat we zerur bolsa çalşylýar ýa-da aýrylýar.

10. Özüňizi gaýtalamaň.

GURY koduny gaýtalamaň (Özüňizi gaýtalamaň). Koduňyzy ep-esli azaldýan, ýadyňyzda saklaýan esasy düzgünleriň biridir. Repeatedhli gaýtalanýan kod bölekleriňizi aýratyn funksiýa goýmaga synanyşyň. Elbetde, GURY, KISS (simpleönekeý samsyk saklaň), SOLID , YAGNI hakda has köp gürleşip bileris. Bu sözler düşünmek we dizaýn etmek üçin zerurdyr. Aýry-aýry makalalar gerek, belki, olar hakda ýene ýazaryn, sebäbi bu makala “Arassa kod” kitabyna syn bermäge bagyşlanýar.
Robert Martin tarapyndan "Arassa kod".  Döredijiler üçin “kung fu kody” atly kitaba syn - 2
Wada berlişi ýaly, siziň üçin kiçijik we aňsat iş. Programma, berlen maglumatlara esaslanyp semizlik indeksini hasaplamaly. Teswirlerde koddaky ýalňyşlyklaryň we düzedişleriň sanyny ýazyň. P.S. Kod işleýär we dogry ulanylsa öz funksiýasyny ýerine ýetirýär.
//Weight in kg.
//Height in metres.
public class sample {
    public static void main (String[] args) {
        humanIMB humanIMB = new humanIMB(80,1.52);
        System.out.println(humanIMB.Result());
    }
}
class humanIMB {
    public double W; //Weight Human
    public double H; // Height Human
    private static double imb;
    public humanIMB(double w, double h) {
        W = w;
        H = h;
        imb = W / (H * H);
    }
    public double takeW() {
        return W;
    }
    public void putW(double w) {
        W = w;
        imb = W / (H * H);
    }
    public double takeH() {
        return H;
    }
    public void putH(double h) {
        H = h;
        imb = W / (H * H);
    }
    public static double takeImt() {
        return imb;
    }
    public static String Result() {
        String  string = null;
        if (imb >=18.5 & imb <25) {
            string ="Норма, ты в форме!";
        }
        if (imb >=25 & imb <30) {
            string ="Предожирение. Эй, поосторожнее с пирожными ";
        }
        if (imb >=30) {
            string ="Ожирение. SCHWEINE! Хватит жрать, иди на треню!";
        }
        if (imb <18.5) {
            string ="Дефицит массы тела. В модели решил переквалифицироваться?";
        }
        return string;
    }
}
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION