Apakah Anda benar-benar menulis 'kode bersih'? [Tutup]


54

Saya telah melihat beberapa programmer mengubah kode mereka berulang-ulang tidak hanya untuk membuatnya 'berfungsi baik', tetapi juga untuk membuatnya 'terlihat bagus'.

IMO, 'kode bersih' sebenarnya adalah pujian yang menunjukkan bahwa kode Anda elegan, mudah dimengerti dan dapat dipelihara. Dan perbedaannya muncul ketika Anda harus memilih antara kode yang menarik secara estetis vs kode yang sulit untuk dilihat.

Jadi, berapa banyak dari Anda yang benar-benar menulis 'kode bersih'? Apakah ini praktik yang baik? Apa manfaat atau kelemahan lain dari ini?


Dalam semua upaya saya untuk menulis kode "bersih" sesuai dengan prinsip-prinsip mapan, saya tidak pernah benar-benar merasa begitu mudah untuk mempertahankan melewati skala tertentu berdasarkan pada premis seperti itu saja. Jauh lebih relevan adalah keandalannya dan seberapa teruji itu dan seberapa cocok untuk tujuannya (yang dapat berhubungan dengan implementasi dan desain). Semua kebersihan di dunia tidak dapat menebus kekurangan semua ini, dan kadang-kadang kode yang paling dapat diandalkan yang terus saya gunakan bukan yang terbersih, sedangkan yang terbersih saya tidak selalu yang paling dapat diandalkan.

Jadi di atas semua hal - keterbacaan di atas, keindahan, SOLID, apa pun - Saya merasa bermanfaat untuk memprioritaskan keandalan dan "stabilitas" (kualitas tidak berubah dalam buku saya, dan lebih jauh lagi, kurang kebutuhan atau keinginan untuk berubah lebih lanjut). Hal-hal yang dapat diandalkan dan stabil adalah hal-hal yang telah bertahan dalam ujian waktu bagi saya, dan kadang-kadang hal itu tidak terlalu bersih sama sekali oleh buku-buku banyak orang (beberapa kode saya yang paling sering digunakan adalah kode C yang berasal dari tahun 80-an dan awal 90-an). yang menerapkan hal-hal seperti peretasan bit-fiddling yang hampir tidak ada yang mengerti lagi - masih bekerja dengan sangat andal).

Jawaban:


52

Saya berpendapat bahwa banyak dari kita tidak menulis kode bersih . Dan umumnya, itu bukan tugas kami . Tugas kami sebagai pengembang perangkat lunak adalah memberikan produk yang berfungsi tepat waktu.

Saya teringat posting blog Joel Spolsky: The Duct Tape Programmer .

Ia mengutip dari Coders at Work :

Pada akhirnya, kirimkan barang itu! Sangat bagus untuk menulis ulang kode Anda dan membuatnya lebih bersih dan pada ketiga kalinya itu akan benar-benar cantik. Tapi bukan itu intinya — Anda di sini bukan untuk menulis kode; Anda di sini untuk mengirimkan produk. - Jamie Zawinsky

Saya juga diingatkan akan respons blog Robert Martin :

Begitu. Jadilah cerdas. Bersihkan. Sederhana saja. Kapal! Dan siapkan gulungan lakban kecil, dan jangan takut untuk menggunakannya. - Paman Bob

Jika kodenya, yang ditulis pengembang bersih dan berfungsi (dapat dikirim), baiklah, baik untuk semua orang. Tetapi jika seorang pengembang bermain-main mencoba membuat kode yang bersih dan mudah dibaca dengan mengorbankan kemampuan untuk mengirimkannya tepat waktu, maka itu buruk. Buat itu berfungsi, gunakan lakban, dan kirimkan. Anda bisa refactor nanti dan membuatnya super cantik dan efisien.

Ya, itu praktik yang baik untuk menulis kode bersih, tetapi tidak pernah dengan mengorbankan kemampuan untuk mengirimkannya. Manfaat mengirimkan produk yang direkam dengan saluran tepat waktu jauh melebihi manfaat kode bersih yang tidak pernah selesai dan dikirim.

Sebagian besar kode yang saya temui tidak bersih. Beberapa benar-benar jelek. Tetapi mereka semua dilepaskan dan digunakan dalam produksi. Beberapa orang mungkin mengatakan bahwa tidak profesional untuk menulis kode yang berantakan. Saya tidak setuju. Yang profesional adalah memberikan kode yang berfungsi, apakah itu bersih atau berantakan. Pengembang harus melakukan yang terbaik yang dia bisa, mengingat waktu apa pun yang dialokasikan sebelum pengiriman. Lalu, kembali untuk membersihkan-- itu profesional. Semoga kode yang dikirim bukan lakban murni dan 'cukup bersih'.


45
Selama hutang teknis Anda ( en.wikipedia.org/wiki/Technical_debt ) tidak membawa Anda ke "kebangkrutan teknis" (Tidak dapat memberikan fitur baru, memperbaiki satu bagian memecah yang lain, dll ...), dan Anda mengawasi di atasnya, saya setuju.
Matthieu

3
@HeathLilley Setuju. Saya hanya tidak percaya pengembang yang mengatakan hanya kode bersih harus ditulis. Itu palsu. Kode berantakan terjadi. Gagasan bahwa pengembang seharusnya hanya menulis kode yang bersih dan benar dari awal adalah ilusi. Saya mengedepankan gagasan bahwa kami selalu mengunjungi kembali dan memperbarui setelah pemahaman kami tentang domain meningkat.
Spong

40
Masalah dengan "kirim saja barang itu sekarang" adalah bahwa manajemen tidak akan membeli alasan Anda untuk refactoring nanti, tetapi jika Anda secara tak terlihat melakukannya SEKARANG, semuanya akan baik-baik saja.
Pekerjaan

5
Ilusi lain adalah berpikir Anda akan punya waktu untuk membersihkannya nanti. Itu tidak akan terjadi. Anda akan memiliki hal-hal lain untuk dikirim. Anda seharusnya tidak memberikan kode yang berantakan. Ngomong-ngomong, Anda juga harus mengerjakan tenggat waktu, Anda adalah orang teknologi yang tahu berapa banyak waktu yang diperlukan untuk menulis kode bersih. Itu tidak berarti terlalu sering membersihkan dan bermain-main untuk waktu yang gila, itu berarti waktu untuk refactor sebelum Anda mengirimkan kode harus diperhitungkan.
Steve Chamaillard

3
"Anda dapat refactor nanti" [rujukan?]
Carl Leth

39

Anda harus memastikan bahwa kode Anda sangat mudah dibaca, bersih, dan terpelihara. Itulah yang harus dilakukan oleh semua programmer .

Tetapi Anda berbicara tentang over styling(seperti istilah yang lebih baik dari kode-gadis itu ) yang hanya melayani ego pengarangnya.

Saya telah melihat banyak pengembang di masa lalu sangat bangga dengan kreasi mereka (Anda tahu, seperti di toilet;)), mereka menghabiskan waktu berjam-jam membersihkan dan memoles kode mereka. Beberapa dari mereka sangat teliti sehingga mereka memastikan bahwa ruang putih yang benar di antara anggota dihormati.

Ini terlalu banyak.

Saya menemukan perilaku semacam itu kontraproduktif. Dalam konteks profesional , Anda harus profesional . Anda bisa mendapatkan kepuasan Anda dengan menulis kode yang bersih, sangat mudah dibaca, dan dipelihara serta berbicara dengan pengguna atau kolega yang bahagia.


13
Yah, saya memolesnya sampai kode itu jelas terbaca oleh saya. Jika saya kembali dua minggu kemudian dan saya harus mencari tahu apa yang saya lakukan, mungkin tidak cukup jelas bagi orang lain untuk dengan mudah mengerti.
Robert Harvey

14
Kode elegan secara inheren lebih mudah dikelola, dan menurut saya lebih mudah dibaca.
Craige

6
+1, saya telah melihat beberapa KODE SPAGHETTI dengan gaya sempurna di masa lalu.
Jas

23
Saya setuju dengan sentimen, tetapi saya menulis kode saya dengan jumlah spasi yang benar di antara anggota, dan saya jengkel oleh orang-orang yang tidak. Ini hal yang mudah dilakukan (dipermudah dengan alat otomatis seperti StyleCop), dan konsistensi yang diberikan sebanding dengan sedikit usaha yang diperlukan.
Robert Harvey

3
@sunpech: Tulis bersih, dan jauh lebih mudah untuk tetap bersih.
David Thornley

24

Saya tidak setuju dengan jawaban yang diterima pada pertanyaan ini.

Tanggung jawab Anda jelas untuk dikirim, tetapi biasanya Anda juga memiliki tanggung jawab untuk mengirimkan sesuatu yang dapat dikelola dengan biaya seefektif mungkin oleh Anda dan pengembang di masa mendatang.

Saya telah menghabiskan waktu sebagai programmer atau konsultan pemeliharaan yang buruk di situs yang harus memahami dan men-debug beberapa sistem besar yang tidak terdokumentasi, dan saya dapat memberitahu Anda bahwa desain yang buruk dan kode yang membingungkan dapat menyebabkan berjam-jam atau bahkan berhari-hari upaya yang sia-sia. Saya dapat memikirkan banyak situasi di mana upaya ekstra N jam oleh pengembang awal dapat menyebabkan penghematan biaya 5N dalam hal waktu saya.

Saya tahu ada statistik yang beredar tentang ini, tetapi dalam pengalaman saya di beberapa proyek, setiap baris kode yang ditulis dibaca 5-20 kali selama ekstensi dan pemeliharaan.

Jadi saya akan mengatakan untuk membersihkan kode hingga satu inci dari hidupnya . Butuh waktu, tetapi kemungkinan penghematan biaya bersih selama umur proyek.


2
Tidak, Anda membersihkan kode Anda kapan dan jika ada waktu, dan anggaran, DAN risiko melakukannya lebih kecil daripada risiko tidak melakukannya. Dalam lingkungan produksi, itu berarti cukup sering Anda tidak akan memoles kode yang sudah ada untuk membuatnya lebih cantik, itu hanya tidak hemat biaya tetapi tidak menyebabkan risiko memperkenalkan bug baru.
jwenting

Ini juga tergantung pada sudut pengembangan perangkat lunak tempat Anda bekerja. Saya dulu bekerja untuk agensi Pemasaran Digital yang dengan senang hati mengirimkan tagihan kepada klien mereka jika tahap berikutnya memakan waktu lebih lama karena masalah basis kode. Dorongan kami untuk lebih banyak waktu selama dev untuk memperbaiki masalah yang ada ditembak jatuh mendukung perpanjangan waktu dev setara dengan lebih banyak uang untuk bisnis.
Simon Whitehead

1
Saya setuju dengan itu, Anda harus mengirimkan kode, tetapi jika Anda tidak dapat memperbaiki / memperbarui / memutakhirkan, apa yang Anda kirim bukan kode, tetapi lubang uang. Saya menemukan bahwa orang-orang yang menentang gagasan itu terbiasa bekerja di lingkungan yang buruk dan memperdebatkan sistem yang tidak pernah mereka alami. Saya telah memelihara kode bersih dan tidak bersih, dan akan memberi tahu Anda bahwa kode bersih jauh lebih murah dan lebih cepat untuk dipelihara dan dikembangkan.
Jdahern

21

Apakah ada di antara kita yang membeli mobil jika kita tahu bahwa di bawah kap mobil itu semua berantakan dan sulit untuk dipecahkan, dirawat atau diperbaiki dan dibutuhkan lebih banyak sumber daya untuk berjalan daripada yang seharusnya?

Mengapa harus berbeda untuk perangkat lunak?

Hanya karena pengguna akhir tidak dapat melihat di bawah tenda tidak berarti mereka tidak akan pernah mengetahuinya. Cepat atau lambat itu akan muncul.

Menjawab pertanyaan "Apakah Anda benar-benar menulis 'kode bersih'?" -- Oh ya.!


Saya tidak setuju - perangkat lunak tidak berkarat (seperti yang dikatakan Joel), tidak seperti bagian dalam mobil. Anda mungkin berpendapat bahwa ketika OS ditingkatkan, perangkat lunak juga harus ditingkatkan, tetapi itu adalah sesuatu yang berbeda. Juga, saya memang menulis kode bersih, tetapi saya tidak berpikir itu adalah karakteristik paling penting dari kontribusi saya.
K.Steff

18

Jika dengan 'kode bersih' maksud Anda apakah saya pergi keluar dari cara saya untuk memastikan kode sejelas mungkin?

Heck ya.

Semakin bersih, semakin jelas kodenya, semakin mudah dipelihara, dan dengan demikian menghemat waktu Anda dalam jangka panjang. Jangan melihat kode bersih sebagai kesombongan; melihatnya sebagai investasi dalam menghemat upaya dan waktu di masa depan.


15

Jujur itu tergantung. Saya suka bagaimana semua orang melontarkan garis partai tentang bagaimana "sesuatu yang kurang dari kode bersih yang terdokumentasi dengan baik adalah parodi belaka!", Tetapi saya bekerja dalam bisnis dengan siklus penyebaran yang konyol dan tanpa pengawasan: Saya melakukan yang terbaik yang saya bisa, tetapi saya menulis begitu banyak kode itu sangat sulit untuk menulis kode sempurna bersih yang orang lain klaim mereka tulis.

Saya mencoba menulis kode yang dapat dengan mudah dikelola oleh seseorang yang memiliki kemampuan saya kira-kira. Saya mengomentari bagian yang sulit, saya memberi nama program, variabel, dan nama-nama kelas ramah, saya menyebarkan, dan saya melanjutkan. Saya tidak punya waktu untuk melakukan hal lain.

Kadang-kadang saya merasa sedikit bersalah tentang itu, tetapi tidak terlalu. Anda harus melihat beberapa kengerian yang saya tangani setiap hari. Dekade kode khusus dalam bahasa yang tidak jelas dengan nol dokumentasi. Salah satu rekan kerja saya berkembang secara eksklusif dalam Visual Basic 6.0 dan menyebarkan binari yang diberi nama samar di semua tempat. Wanita yang saya ganti diprogram secara eksklusif dalam RPG .

Sangat sulit bagi saya untuk percaya, omong kosong mengerikan seperti yang saya lihat di tahun-tahun saya sebagai seorang programmer, bahwa setiap orang hanya menghasilkan kode bersih.


Sepakat. Kebanyakan orang tidak akan menulis kode bersih untuk dikirimkan / dirilis pertama kali. Ada lakban yang terlibat untuk menyelesaikan pekerjaan.
spong

2
Cukup dengan lakban! Spolsky bukan tuhan. Dia meletakkan celananya pada satu kaki pada saat yang sama seperti yang kita lakukan!
Pekerjaan

5
Bagian dari alasan Anda menulis kode bersih adalah bahwa lebih cepat menulis kode bersih daripada kode kotor pada waktu apa pun kecuali waktu terpendek (katakan beberapa jam). Jika berpikir selama beberapa detik tentang variabel dan nama metode akan membuat Anda melewatkan tenggat waktu, maka waktu berharga Anda akan hilang ketika Anda dan / atau rekan kerja Anda menjadi bingung dengan kode Anda. Anda membuat kode suara hampir sekali pakai, seperti Anda akan menulisnya, kode itu akan digunakan untuk sementara waktu tanpa pemeliharaan, dan kemudian pensiun. Mungkin dalam kode situasi Anda yang aneh adalah sekali pakai. Saya belum pernah melihat itu terjadi dalam satu dekade pengalaman praktis.
PeterAllenWebb

1
@ Peter: Dan dalam dua dekade, saya belum pernah melihat tempat di mana setiap bagian kode bersih. Aku bahkan jarang melihat tempat di mana setengahnya . Dimana kamu bekerja? NASA?
Satanicpuppy

2
@ Seticpuppy Saya telah melihat banyak kode kotor di waktu saya, dan saya sudah menulis bagian saya, tetapi hampir semuanya membuang-buang waktu saya atau orang lain. Saya mendukung klaim bahwa kode bersih sebenarnya dapat ditulis LEBIH CEPAT daripada kode kotor pada skala waktu lebih dari beberapa jam.
PeterAllenWebb

7

Saya rasa saya tidak suka istilah "kode gadis" tetapi kode bersih = kode yang dapat dipelihara. Kurang dari itu tidak profesional.

Sebagai aturan umum, saya mempertimbangkan pengembang berikutnya yang harus melihat kekacauan saya.

Sering kali itu adalah saya ... beberapa bulan kemudian ... ketika saya tidak ingat bagaimana cara kerjanya ... dan saya bahkan memiliki lebih sedikit waktu untuk melakukan perubahan.


5

Saya mencoba menulis "kode bersih" dalam arti Bob Martin (mis. Desain OO). Ada nilai besar dalam menulis kode bersih. Itu jauh lebih bisa dipelihara.

Lalu saya membiarkan ReSharper menjadikannya "kode cantik" untuk saya (mis. Perataan, jeda baris, dll.). Ada nilai bagus dalam menulis kode cantik. Tetapi ada pengembalian yang semakin berkurang. Beberapa prettification membuatnya sedikit lebih dapat dipertahankan karena kemudahan membaca.

Jika Anda merasa bahwa berbaris rapi blok kode yang besar diperlukan untuk membuatnya dapat dibaca, maka masalahnya adalah blok kode besar freakin Anda! Ini terlalu besar. Saya melihat banyak contoh orang yang bersusah payah untuk mendandani beberapa kode yang dirancang dengan sangat buruk.

Jika saya tidak memiliki ReSharper, saya masih akan memiliki kode bersih, tetapi tidak akan secantik itu.

Saya tidak berpikir saya harus menghabiskan lebih dari ~ 5% dari waktu pengkodean saya dalam prettifying. Yang berarti semakin kuat editor saya dan semakin mahir saya dengan itu, semakin cantik saya bisa melakukannya.


4

Tampaknya tidak ada yang memunculkan poin tentang apa yang menjadi kepentingan terbaik perusahaan Anda?

Seringkali, jika tidak selalu, programmer hanya karyawan, dan sementara keputusan manajemen mungkin membuat kita frustrasi, kita sering tidak memiliki semua data yang mereka lakukan.

Sebagai contoh, katakanlah perusahaan dikontrak dengan klausa bahwa jika perangkat lunak tidak siap tepat waktu, Anda tidak akan dibayar (itu hanya terjadi pada kami, meskipun saya pikir kami mendapatkan pembayaran setelah semua). Ya, kode bersih itu penting, tetapi yang lebih penting adalah membuat kode berfungsi pada hari pembayaran!

Contoh lain - perusahaan berada dalam posisi keuangan yang buruk dan perlu mengumpulkan uang. Tebak siapa yang peduli dengan kualitas? Anda dapat memperbaikinya nanti, jika perlu, kirimkan saja!

Suatu argumen mungkin adalah "Mengapa saya harus menjual dan menulis kode jelek?". Nah, mengapa perusahaan Anda harus membayar cek bagus setiap bulan? Pilihan, temanku. Jika Anda menginginkan idealisme, cobalah Free Software Foundation ; Saya mendengar mereka melakukan beberapa hal yang sangat keren (maksud saya yang ini, dan saya menghormati FSF dan OSS)

Di sisi lain, jika Anda bekerja pada sebuah proyek di mana pertumbuhan penggunaan bahan peledak diharapkan (walaupun proyeksi semacam itu hampir tidak pernah akurat), Anda sebaiknya meletakkan dasar yang kuat dengan kualitas kode terbaik yang diperlukan, karena hampir pasti pemeliharaan akan dilakukan. menjadi biaya yang lebih besar untuk proyek tersebut.

Programmer suka kode 'bersih', apa pun artinya. Kami bahkan tidak bisa menyetujui apa yang bersih, tetapi kami menyukainya. Namun, terkadang itu tidak masalah sebanyak kegunaan dan kebenaran. Ini mungkin tampak sinonim, tetapi tidak - jika Anda telah melihat kode yang ditulis oleh peretas Perl sejati dalam 4 jam dengan maksud untuk digunakan dua kali dan dibuang, Anda akan mengakui itu tidak bersih, tetapi berfungsi.

Jadi kadang-kadang, selain ego, kita harus membuatnya bekerja. Perhatikan bahwa saya tidak merekomendasikan menulis kode buruk sebagai kebiasaan; Saya hanya menunjukkan bahwa mungkin perlu. Kesempurnaan membutuhkan waktu yang mungkin tidak dimiliki perusahaan Anda. Jadi, jika majikan Anda tidak keberatan, buat peranti lunak, tetapi jika Anda perlu, cukup tulis kode kerja, jangan pedulikan 'kebersihannya'. Itu bukan jawaban 'Satu ukuran cocok untuk semua' - Anda harus memprioritaskan.


3

Saya tidak yakin "terlihat baik" dan menjadi "elegan, mudah dimengerti dan dapat dipelihara" adalah setara.

Saya mencoba menulis kode, yaitu "elegan, dapat dimengerti dan dapat dipelihara". Saya melakukan refactor kode saya sendiri agar lebih cocok dengan kriteria tersebut.

Saya tidak melihat kekurangan, kecuali biaya yang dikeluarkan tepat waktu.

Agar kode "terlihat bagus", ada banyak alat otomatis, yang akan membuat indentasi dan mengatur ruang semua sesuai keinginan.


2
Itu menyebabkan saya semakin terganggu ketika saya melihat kode diformat dengan buruk. Orang yang menulisnya bisa saja menggunakan salah satu alat itu untuk melakukannya untuk mereka. Itu juga paling sering terjadi ketika mencampur tab dan spasi bersama-sama untuk membuat kekacauan yang tidak suci.
jsternberg

3

Terlalu banyak hal tidak pernah ada gunanya.

Namun, satu hal penting yang perlu diingat dengan kode "najis" adalah bahwa hal itu dapat dengan mudah menyebabkan " jendela rusak ". Jika kode diformat dengan sangat buruk, saya pikir banyak orang yang baru mengenal basis kode mungkin merasa kurang cenderung melakukan pekerjaan yang baik dengan pemeliharaan dan evolusi yang menyebabkan spiral ke bawah yang pada akhirnya mungkin mempengaruhi kondisi kerja perangkat lunak.

Oleh karena itu mempertahankan tingkat kebersihan tertentu dalam kode bermanfaat bagi lebih dari sekadar sesama pengembang Anda. Jangan menghabiskan terlalu banyak waktu untuk itu (~ 5% telah disebutkan). Pelajari cara menggunakan alat kerajinan Anda untuk mengotomatiskan tugas-tugas manual (pemformatan kode dalam kasus ini). Bertanggung jawab atas apa yang Anda lakukan dan selalu melakukan apa yang menurut Anda paling bermanfaat bagi perusahaan / pelanggan / pengguna Anda.


3

Ini adalah kutipan dari Clean Code, oleh Bob Martin:

Untuk mengantar titik ini pulang, bagaimana jika Anda seorang dokter dan memiliki seorang pasien yang menuntut agar Anda menghentikan semua cuci tangan konyol dalam persiapan untuk operasi karena terlalu banyak waktu? Jelas pasien adalah bos; namun dokter harus benar-benar menolak untuk patuh. Mengapa? Karena dokter lebih tahu daripada pasien tentang risiko penyakit dan infeksi. Akan tidak profesional (apalagi kriminal) bagi dokter untuk mematuhi pasien.

Demikian juga tidak profesional bagi programmer untuk tunduk pada kehendak manajer yang tidak mengerti risiko membuat kekacauan.


2

Saya pikir "kode bersih" harus bersih atau bersih daripada bagaimana Anda menulis ujian fisika / teknik / matematika. Jika terlalu berantakan, siswa kelas tidak akan mengerti pekerjaan Anda dan mungkin akan menandainya salah meskipun itu benar.


2

Saya suka kode dapat dibaca, tetapi yang paling penting adalah konsistensi. Bagi saya itu berarti konsistensi dengan konvensi penamaan dan spasi antara fungsi, tanda kurung pada baris yang sama atau baris berikutnya dari pernyataan if, dll.

Tentu saja, ada kalanya seseorang memprogram sesuatu dengan gaya kode yang konsisten dan itu membuat saya gila. Terutama kode yang tidak "bernafas". Sebagai contoh:

void function1(){
    //whatever code
}
int fooBar(){
    //whatever else
}
Foo* someOtherFooBar(int value){
    if(value){
        //do something
    }
    return ...;
}

Yah ... Terlihat lebih buruk dengan metode Objective-C, dan dengan banyak dan banyak pernyataan bersarang, dan garis yang lebih panjang dari 80 karakter. Tapi itu masih mengganggu saya :)


2

Saya berusaha keras untuk membersihkan kode. Saya pikir itu sangat membantu bug menonjol.

Saya tidak setuju dengan konsep "kirim barang sialan sekarang", karena kode bersih adalah investasi untuk masa depan. Juga terlalu banyak perangkat lunak yang dikirimkan dengan bug yang terlalu banyak. Mengatasi satu bug menurut saya lebih baik daripada mengimplementasikan satu fitur baru.

Juga jika Anda melihat perkiraan produktivitas programmer , saya pikir skor saya tidak terlalu buruk. Menulis kode bersih adalah kebiasaan, dan semakin banyak pengalaman sebagai seorang programmer, semakin efisienlah jadinya. Jika seseorang tidak pernah mencobanya, jelas, ia tidak akan pernah mendapatkan pengalaman dengannya.

Hal lain yang perlu dipertimbangkan, adalah bahwa sebagian besar waktu pengembang digunakan untuk membaca kode, sehingga kode yang dapat dibaca sangat mengurangi waktu yang dihabiskan untuk membaca. Memahami algoritma tidak berdokumen misalnya bisa mahal dan mengundang bug baru.

Satu hal yang pasti saya lewatkan dan ingin memiliki satu hari adalah pemformat kode otomatis yang dapat saya sesuaikan dengan gaya saya, yang akan sangat menghemat waktu saya, terutama ketika membaca kode orang lain.

Pengkodean yang bersih memang memiliki tautan ke perfeksionisme, yang memang memiliki risiko tidak pernah terwujud, tetapi saya pikir itu terutama merupakan masalah ketika Anda memulai, karena Anda berinvestasi kemudian dan ketika menggunakan kembali potongan kode Anda yang elegan, dikombinasikan dengan pengalaman Anda , semakin tua Anda akan sangat produktif dan jauh lebih sedikit dihantui oleh bug daripada coders yang berantakan.

Ini adalah sepotong kode yang menunjukkan gaya pengkodean saya.


1

Cukup hindari "kode rias". Ada banyak pengembang di luar sana yang melakukan hal-hal murni karena kesombongan (atau karena OCD) dan tidak ada yang lain. Celana dalam saya benar-benar bengkok dengan orang-orang itu.


Seperti sayap atau komentar kotak (lebih buruk), katakan?
David Thornley

1

Saya menulis kode yang mencoba untuk memecahkan masalah yang diberikan dengan cara yang paling efisien dan secara teori 'elegan'. Dalam arti hanya bersih. Jika kebetulan 'cantik' saat aku selesai, biarlah.

Apa yang saya temukan dalam pengalaman terbatas saya adalah bahwa ketika orang mengeluh tentang 'kode bersih', keburukan biasanya merupakan hasil dari solusi yang mengerikan daripada pengkodean konvensi.


1

Saya akan mengatakan saya berusaha untuk menulis kode yang lebih bersih, tetapi itu dapat berubah karena kendala waktu atau jika saya mengerjakan sesuatu yang sulit. Itu cenderung menjadi berantakan ketika fokus untuk membuatnya bekerja. Lalu saya akan kembali dan membersihkan saat saya memeriksanya. Jika Anda kembali ke kode dan harus menghabiskan terlalu banyak waktu untuk menyegarkan ingatan Anda, Anda tidak cukup berkomentar.

Kode bersih itu baik tetapi seperti yang lainnya, itu hanya perlu cukup bersih. Mengindentasi 5 baris kode 4 spasi dan satu baris 5 spasi tidak menambah kesulitan membaca.


1

Saya pikir itu tergantung pada apa yang Anda lakukan. Jika saya menulis aplikasi proof-of-concept maka saya pada dasarnya koboi-coding pantatku dan tidak melihat ke belakang. Jika saya sedang mengerjakan suatu aplikasi yang sebenarnya akan saya kerjakan untuk sementara waktu, maka saya memastikan saya membuat kode dengan cukup baik serta membuatnya dimengerti sebulan dari sekarang.

Saya pikir styling kode Anda sedikit rapuh. Seperti yang dikatakan beberapa orang di atas, pekerjaan Anda adalah membuat suatu produk, bukan kode yang diformat, tetapi saya akan mengatakan paling tidak orang harus tetap dengan gaya komentar dan pengkodean yang jelas. Saya benci melihat setengah dari variabel unta yang dikurung dan setengah lainnya dari Hongaria.

Tetapi juga, itu tergantung pada apa yang Anda maksud dengan 'kode bersih'.


0

Saya akui melakukan itu; dan manfaatnya tidak terganggu setiap kali saya melihatnya. Saya kira itu juga lebih mudah dibaca, dan karena itu bug menjadi lebih jelas; tetapi alasan sebenarnya adalah bahwa saya tidak tahan kode jelek.


0

Refactoring kode Anda untuk membuatnya elegan membuatnya lebih mudah dibaca, dan lebih mudah dipelihara. Bahkan hal-hal kecil seperti menyelaraskan tugas variabel Anda:

int foo    = 1;
int bar    = 2;
int foobar = 3;

lebih mudah dibaca daripada

int foo = 1;
int bar = 2;
int foobar = 3;

yang berarti lebih mudah untuk membaca sekilas saat Anda sedang debug nanti.

Juga, di PHP Anda diizinkan sejumlah blok kode acak. Saya menggunakan ini untuk mengelompokkan tugas-tugas logis:

// do x
{
    // ...
}

// do y
{
    // ...
}

Ini menambahkan definisi yang jelas ke kode yang relevan.

Sunting : Sebagai bonus tambahan, mudah untuk mengawali salah satu dari blok kode logis dengan if (false)jika Anda ingin melewatinya sementara.


11
Saya pikir mereka sudah menemukan sesuatu yang melakukan itu - itu disebut fungsi. Setiap kali Anda menemukan diri Anda membuat salah satu dari blok itu, Anda harus membuat fungsi sebagai gantinya. Dari sana, jika Anda tidak ingin menjalankannya, komentari panggilan fungsi (alih-alih memberikan komentar backhanded)
riwalk

1
@ stargazer712: Saya benci fungsi php karena kurangnya ruang nama yang ditentukan. Tidak dapat dihindari, membaca kode elses seseorang, mereka memiliki satu "termasuk" di bagian atas, yang itu sendiri mencakup 5 hal lain, yang masing-masing mencakup 4 lebih, dan kemudian saya harus melakukan pencarian pada seluruh basis kode untuk menemukan definisi fungsi. Sangat membuat frustrasi.
Satanicpuppy

Seringkali ini adalah kode yang tidak memerlukan deklarasi fungsi. misalnya. tidak ada kemungkinan untuk digunakan kembali, perhitungan / pengaturan variabel cakupan lokal yang terkait, dll
Craige

di sisi lain, kode tanpa kemungkinan penggunaan kembali jarang terjadi. Jika Anda menemukan diri Anda menulis banyak kode yang tidak dapat digunakan kembali, ada kemungkinan bagus bahwa itu dapat ditingkatkan ... sangat.
riwalk

-2

Saya hanya menulis kode saya, mengikuti standar perusahaan. Jika saya menginginkannya "siap," saya dapat menjalankannya melalui kode beautifier.


2
Kecuali apa yang umumnya terjadi adalah orang lain akhirnya menjalankannya melalui ahli kecantikan mencoba untuk membersihkan apa yang Anda tidak membersihkan.
riwalk

@ Stargazer712 itulah sebabnya saya tidak terlalu repot mengikuti standar perusahaan
Muad'Dib

@ Maud'Dib, masalahnya kemudian adalah hasilnya hanya sebagus ahli kecantikan. Sementara ruang putih horizontal sepenuhnya tentang ruang lingkup (dan karena itu membersihkan dengan sangat baik), ruang putih vertikal umumnya tentang niat (mengelompokkan apa yang terkait), dan membersihkan sangat buruk. Intinya - kasihanilah sesama pengembang Anda.
riwalk

@ Stargazer712 Masalahnya adalah, kecuali untuk "standar perusahaan" yang lainnya sepenuhnya masalah selera, yang subjektif. misalnya, saya suka menempatkan spasi di tempat-tempat di mana rekan kerja saya membenci mereka secara positif. Saya membuatnya terlihat bagus untuk saya, dan sejauh itulah yang saya lakukan.
Muad'Dib

1
Berhati-hatilah dengan "ahli kecantikan", karena mereka dapat mengacaukan menggabungkan banyak waktu (saya punya pengalaman tangan pertama :)).
Juha Untinen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.