JavaRush /Blog Java /Random-MS /Robert Martin, Kod Bersih. Semakan buku mengenai "kod kun...
Artem Murk
Tahap
Днепр

Robert Martin, Kod Bersih. Semakan buku mengenai "kod kung fu" untuk pembangun

Diterbitkan dalam kumpulan
Hello Javarashevites! Artikel ini ialah ulasan buku "Kod Bersih" oleh Robert Martin. Bersama-sama kita akan melihat cara untuk menambah baik dan mengoptimumkan kod anda, dan pada akhirnya tugas kecil tetapi menarik menanti anda.
"Kod Bersih" oleh Robert Martin.  Semakan buku mengenai "kod kung fu" untuk pembangun - 1
Setiap hari, apabila kami membuka editor kod anda, kami menjumpai banyak kelas, fungsi dan pembolehubah. Pilihan terbaik ialah jika ini adalah kod anda yang ditulis dari awal, ditulis sekali, terdapat beberapa baris di dalamnya, anda sedang mengerjakannya sendiri, tiada suntingan dan tiada sokongan lanjut daripada pelanggan. TAPI! Seperti yang ditunjukkan oleh amalan, ya, saya rasa anda sendiri faham bahawa ini tidak berlaku. Pada asasnya, kami perlu berinteraksi dengan ahli pasukan kami, mengekalkan kod "Hindu", dan menghuraikan produk kepada jutaan baris. Saya sering mendengar jawapan seperti ini daripada rakan latihan saya: "Kod ini ditulis oleh saya dan saya tidak akan menunjukkannya kepada sesiapa", tetapi apabila saya melihat permintaan pada Bantuan untuk Bantuan dengan kod sedemikian, ia mengambil masa yang sangat lama. masa (kadang-kadang sangat lama) untuk menyelami dan memahami Apa yang orang itu ingin beritahu saya, saya juga ingin mengatakan "padam dan tulis semula"! Hargai masa dan tenaga orang yang ingin membantu anda, menulis dengan betul, dan jika anda tidak tahu caranya, masih belum terlambat untuk belajar. Buku Robert Martin menonjol di kalangan buku format ini kerana ia mengandungi banyak contoh dalam Java. Ini mungkin sedikit pernyataan fanatik di pihak saya, tetapi ia ditulis dalam gaya OOP, iaitu dalam penulisan bahagian dan bahagian. Mudah difahami dan dibaca, buku ini mudah dibaca semasa dalam perjalanan atau pada waktu petang sebelum tidur. Kod Bersih terbahagi kepada 3 bahagian. Pada bahagian pertama, kita diminta untuk meneliti teori buku, belajar tentang corak reka bentuk dan peraturan adab yang baik. Bahagian kedua menjemput kami untuk mempraktikkan pemfaktoran semula dan penulisan, dan bahagian ketiga ialah ringkasan akhir "berbau" kod dalam contoh. Nah, penulis menyentuh banyak topik yang anda perlukan terutamanya pengetahuan tentang Java Core, tetapi terdapat juga bahagian yang didedikasikan untuk Ujian Unit JUnit, Log4j Logging, pengetahuan tentang corak paling mudah dalam reka bentuk (tetapi seperti yang saya katakan di atas, tidak ada banyak daripada mereka, dan semua yang tidak dapat difahami boleh berjaya digoogle, ya dan menganalisisnya dalam kursus JavaRush). Semua bab dalam buku tidak berkaitan antara satu sama lain; anda boleh mula membaca dengan jayanya dari bab yang anda suka. Ringkasan ringkas idea-idea utama yang saya ambil daripada buku. Saya akan berterima kasih atas komen anda tentang mereka, di mana anda boleh berkongsi visi anda sendiri tentang kenyataan ini.

1. Komen == jahat.

Dalam kebanyakan kes, komen adalah tongkat yang kami cuba gunakan untuk menutup kod buruk kami. Dan dalam beberapa kes, mereka juga berbohong tentang tujuan kaedah atau pembolehubah jika terdapat pemfaktoran semula kod yang berterusan.

2. Kod komen, kod mati.

Meninggalkan kepingan kod ini dalam aplikasi anda sama seperti sampah. Kod yang tidak digunakan terkumpul dari semasa ke semasa dan mengganggu kebersihan aplikasi anda, semak kod untuk modul tersebut dari semasa ke semasa.

3. Tajuk kaedah, kelas dan pembolehubah.

Ia bernilai artikel berasingan untuk membincangkan topik ini. Jangan malas dan tulis nama yang boleh memberitahu tentang tujuan mereka. Ketahui beberapa standard dalam tajuk ejaan. Topik ini adalah "Mesti Ada" untuk kajian terperinci.

4. Setiap kaedah dan pembolehubah mempunyai tempatnya dalam hierarki kelas.

Biasanya, kelas boleh mempunyai pembolehubah dan kaedah (statik dan bukan statik), pembina, kelas bersarang dan dalam, dan enum. Ringkasnya, terdapat banyak maklumat, dan adalah perlu untuk menentukan tempat semua orang dalam kelas. Jika anda melihat kelas teras java, anda akan melihat bahawa struktur itu berstruktur dengan jelas, kita boleh melihat setiap bahagian di tempatnya, sudah tentu dalam projek anda ia boleh berubah dalam projek, tetapi tidak dalam setiap kelas. Untuk diri saya sendiri, saya telah mentakrifkan struktur pembinaan berikut: Pada permulaan kelas saya mempunyai pembolehubah statik, kemudian pembolehubah objek + Enum jika wujud. Selepas pembolehubah, saya mentakrifkan pembina kelas. Kemudian saya menulis kaedah untuk bekerja dengan kelas. Selepas kaedah saya menulis getter dan setter. Dan pada akhirnya saya mempunyai kelas dalaman. Anda boleh menggunakan struktur saya atau menulis sendiri dalam ulasan.

5. Tahap abstraksi kaedah.

Bagi saya ini adalah penemuan No. 1. Setiap kaedah mengandungi operator pada satu tahap abstraksi sahaja. Anda tidak sepatutnya mencampurkan operasi berbilang peringkat bersama-sama.

6. Ralat pengendalian.

Pengecualian yang Ditanda atau Tidak Ditanda, yang mana lebih baik digunakan dalam projek (apa pendapat anda?, tulis komen)? Saya penyokong checked, tetapi buku ini membantu melihat Pengecualian Tidak Ditanda dari luar. Sesungguhnya, Pengecualian yang tidak ditandakan tidak mencacatkan tandatangan kaedah, terutamanya memandangkan pengecualian "menembus" beberapa lapisan sekaligus. Kesulitan perubahan terkecil membawa kepada definisi semula keseluruhan rangkaian kaedah sebelum menangkapnya, yang amat menyusahkan untuk pembangunan dalam banyak kes.

7. Pemformatan kod.

Kod yang diformat dengan betul bukan sahaja jelas, tetapi juga sangat mudah dibaca. Anda segera mendapat idea tentang kurungan dan tindakan di dalamnya. Menggunakan contoh syarat dalam binaan if, else, anda tidak sepatutnya menulis semuanya dalam satu baris, lebih baik untuk mengalihkan rantai panjang.

8. Penafian dalam keadaan.

Cuba elakkan penafian dalam keadaan, ini lebih kepada faktor psikologi, otak kita tidak memahami penafian dengan baik, dan ya! sebelum ungkapan itu mungkin tidak disedari. Sebagai contoh, menafikan jika (!condition.isTrue) adalah lebih baik untuk menulis semula kaedah, ia akan menjadikannya lebih mudah seperti ini (condition.isFalse)

9. Fungsi mesti melakukan satu operasi.

Jika kaedah anda melakukan banyak operasi, kemudian bahagikannya kepada kaedah operasi tunggal. Kaedah ini sangat mudah untuk disokong, mudah untuk diuji dan, jika perlu, diganti atau dialih keluar.

10. Jangan ulangi diri sendiri.

Jangan ulangi kod DRY (Jangan ulangi sendiri). Ini adalah salah satu peraturan asas yang akan mengurangkan kod anda dengan ketara, ingatlah ia. Cuba letakkan semua kod berulang anda ke dalam fungsi yang berasingan. Sudah tentu, kita boleh bercakap lebih banyak tentang DRY, KISS(Keep it simple Stupid), SOLID , YAGNI. Istilah ini penting untuk pemahaman dan reka bentuk. Mereka bernilai artikel yang berasingan, mungkin saya akan menulis tentang mereka sekali lagi, kerana artikel ini dikhaskan untuk ulasan buku "Kod Bersih".
"Kod Bersih" oleh Robert Martin.  Semakan buku mengenai "kod kung fu" untuk pembangun - 2
Seperti yang dijanjikan, tugas yang kecil dan mudah untuk anda. Program ini mesti mengira Indeks Obesiti berdasarkan data yang diberikan. Tulis dalam komen bilangan ralat dan pembetulan dalam kod. P.S. Kod berfungsi dan melaksanakan fungsinya jika digunakan dengan betul.
//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;
    }
}
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION