Pernahkah Anda bekerja dengan standar pengkodean yang:
- Sangat menurun produktivitas Anda?
- Apakah awalnya termasuk untuk alasan yang baik tetapi disimpan lama setelah masalah asli menjadi tidak relevan?
- Apakah ada dalam daftar begitu lama sehingga tidak mungkin untuk mengingat semuanya?
- Membuat Anda berpikir penulis hanya mencoba meninggalkan tanda mereka daripada mendorong praktik pengkodean yang baik?
- Anda tidak tahu mengapa mereka dimasukkan?
Jika demikian, apa aturan yang paling tidak Anda sukai dan mengapa?
Beberapa contoh di sini
Jawaban:
Ini mungkin mengacak-acak beberapa bulu, tetapi standar yang mengharuskan komentar blokir templated di bagian atas setiap metode selalu bug omong kosong dari saya.
1) Mereka selalu ketinggalan zaman karena mereka terlalu jauh dari kode yang melakukan pekerjaan aktual untuk melihat ketika Anda memperbarui sesuatu. Komentar buruk lebih buruk daripada tidak ada komentar.
2) Mereka sering hanya mengulang informasi yang sudah berisi alat kontrol sumber, hanya saja kurang akurat. Misalnya: Terakhir Dimodifikasi oleh, daftar tanggal / alasan modifikasi.
sumber
Pernah seorang profesor yang menuntut kami memiliki setidaknya satu komentar untuk setiap baris kode.
Itu sangat konyol.
sumber
// comment
saluran sebelum itu?Standar pengkodean perusahaan (C #) kami menyerukan penggunaan ekstensif #REGIONs (bagi mereka yang tidak tahu, ini menandai blok kode sumber yang akan diciutkan menjadi satu baris dalam Visual Studio). Sebagai konsekuensinya, Anda selalu membuka kelas yang tampaknya terstruktur dengan baik, hanya untuk menemukan tumpukan dan tumpukan sampah tersapu di bawah karpet konstruksi #REGION yang bersarang. Anda bahkan akan memiliki daerah di sekitar satu baris, misalnya harus melipat keluar melipat sebuah wilayah LOG untuk menemukan satu deklarasi tunggal dari Logger. Tentu saja, banyak metode yang ditambahkan setelah beberapa daerah dibuat, ditempatkan dalam ruang lingkup wilayah yang "salah" juga. Menyeramkan. Menyeramkan.
Wilayah adalah salah satu fitur terburuk yang pernah ditambahkan ke Visual Studio; itu mendorong penataan permukaan daripada struktur OO yang sebenarnya.
Saat ini, saya membunuh #REGIONs saat dilihat.
sumber
Dalam satu pekerjaan kami terpaksa menggunakan beberapa bentuk notasi Hungaria yang aneh dalam database.
Saya tidak dapat mengingat detailnya, tetapi dari memori, setiap nama bidang harus berisi:
Misalnya, kolom yang memuat nama depan seseorang mungkin disebut:
PRSNFRSTNMVC30X
(Tabel orang, kolom Nama Depan, Varchar 30 karakter, Bukan Null)sumber
Bersikeras bahwa semua kawat gigi harus diikuti oleh komentar untuk apa ujung kurung kurawal:
misalnya:
sumber
kata Nuff.
sumber
#define BEGIN {
dan#DEFINE END }
?Contoh nyata:
paymentmethodtotalshtml
,contracttypechangecontexts
,customsegmentspectexts
,potentialmsceventref
The New York Times memiliki bobot dalam :
sumber
Saya diminta oleh pemimpin software dari sebuah perusahaan untuk melakukan " sederhana, re n kode dundant ". Itu dilarang, misalnya, untuk menambahkan parameter baru ke fungsi yang ada. Anda malah harus menduplikat fungsi, membiarkan yang asli tidak tersentuh untuk menghindari regresi. Tentu saja tidak ada pengujian formal (buang-buang waktu).
Kami juga dilarang menggunakan perangkat lunak gabungan; setiap file hanya dapat dimodifikasi oleh satu programmer pada satu waktu. Perangkat lunak kontrol revisi adalah fiksi ilmiah, tentu saja.
Hari paling bahagia dalam hidup saya adalah ketika ia dipecat (menganggap bahwa sangat, sangat sulit untuk memecat seseorang di Italia).
sumber
Semua interaksi dengan database harus dilakukan melalui prosedur tersimpan . Mungkin masuk akal jika kita hidup di tahun 1997 dan bukan 2010.
Saya baru menyadari bahwa ini sebenarnya mencakup semua kriteria pertanyaan awal:
sumber
Tidak diizinkan untuk menggunakan STL atau pustaka C ++ standar lainnya karena CTO percaya 'kami' dapat melakukannya dengan lebih baik dan lebih cepat. Bahkan konstruksi dasar seperti daftar dan kelas string.
sumber
Notasi Hungaria
Sampel diekstraksi dari " penjelasan Charles Simonyi tentang konvensi penamaan notasi pengenal Hongaria " di MSDN.
sumber
Saya pernah bekerja pada sebuah proyek di mana pimpinan proyek mengamanatkan bahwa setiap variabel - SETIAP variabel - diawali dengan "v". Jadi, vCount, vFirstName, vIsWarranty, dll.
Mengapa? "Karena kita sedang bekerja di VBScript dan semuanya adalah varian".
WTF.
sumber
f
fungsi sebelumnya, maka kode Anda benar-benarfUcked (vUp)
.Hampir lupa yang ini:
Kutipan dari seorang manajer:
Ini bukan untuk perangkat lunak konsumen, tetapi khusus untuk satu organisasi besar. Tidak perlu dikatakan, pelanggan membayar selama bertahun-tahun sesudahnya. Mungkin tampak sepele, tetapi mencoba mengabaikan bug lebih sulit daripada menemukan mereka.
sumber
Komentar XML yang dipaksakan pada semua metode, konstanta, enum, dan properti non-pribadi.
Itu menyebabkan beberapa kode berantakan, terutama karena hasil akhirnya adalah orang-orang baik saja memukul /// untuk membuat tulisan rintisan kosong untuk semuanya atau menginstal GhostDoc dan menambahkannya komentar yang dihasilkan secara otomatis:
[Sunting] Alasan saya menyebutkan ini sebagai standar yang konyol bukan karena saya pikir komentar metode bodoh tetapi karena kualitas komentar ini tidak ditegakkan dengan cara apa pun dan mengakibatkan hanya menciptakan banyak dan banyak kekacauan dalam file kode . Ada cara yang lebih baik untuk membuat dokumen kode yang bermakna daripada persyaratan build blind "must have comment".
sumber
Validations the handler
' - uh-ohTidak benar-benar standar pengkodean, tetapi kami memiliki file dalam kontrol sumber yang disebut 'changelog.txt'
Setiap kali Anda membuat lapor masuk, Anda harus menambahkan entri ke file ini secara manual. Entri ini adalah nomor revisi subversi dan komentar lapor masuk Anda.
Ketika CTO baru dimulai dan seseorang memberitahunya hal ini, ia segera membuat keputusan eksekutif dan berkata, "Kami tidak akan melakukan ini lagi" dan menghapus file. Ini sudah berlangsung bertahun-tahun.
sumber
svn log
?Beberapa tempat yang pernah saya kerjakan bersikeras untuk mengomentari kode yang tidak digunakan atau tidak digunakan alih-alih menghapusnya. Alih-alih mempercayai VCS untuk sejarah, dll. VCS dikelola dengan susah payah dalam file melalui kode komentar.
Masalah besar yang saya temukan dengan ini adalah bahwa Anda sering tidak tahu mengapa kode itu dikomentari. Apakah itu karena beberapa dev secara aktif membuat perubahan dan ingin menyimpannya untuk referensi atau tidak diperlukan lagi?
sumber
Standar pengkodean terburuk yang pernah saya ikuti adalah basis kode yang tidak memilikinya sama sekali. Saya lebih suka mengikuti standar pengkodean yang saya sangat tidak setuju daripada bekerja di basis kode di mana tidak ada sama sekali. Itu membuatnya jauh lebih sulit untuk mempelajari bagian-bagian baru dari basis kode.
sumber
Memaksa komentar inline untuk kontrol versi adalah tentang standar pengkodean yang paling tidak berguna yang saya abaikan.
Oracle DBA yang bersikeras untuk menggunakan ruang putih dengan benar sambil 'memelihara' database dengan tabel yang sangat diperdebatkan yang memiliki lebih dari 200 bidang dan 40 pemicu mendekati.
sumber
Saya melakukan review kode pada proyek yang dipimpin oleh timer pertama C ++ yang memutuskan bahwa semua fungsi anggota kelas harus diawali dengan nama kelas dan visibilitas:
sumber
Diperlukan untuk indentasi semua kode dengan empat spasi;)
sumber
Saya punya pekerjaan bertahun-tahun lalu di mana semua kode kami harus rata kiri - tidak ada indentasi Orang yang datang dengan kebijakan itu tidak suka harus menggulir bolak-balik secara horizontal saat melihat garis panjang kode, menyamakannya bermain ping-pong dengan matanya.
sumber
Ini lebih merupakan contoh bagaimana tidak memiliki standar pengkodean dapat merugikan.
Seorang kontraktor yang bekerja di sebuah bank besar bersikeras bahwa mengikuti standar adalah yang terbaik yang pernah ada. Aplikasi ini ditulis dalam dBase / Clipper dimana ia adalah satu-satunya pengembang untuk dan tentu saja ia datang dengan standar.
Saya adalah seorang programmer otodidak yang sangat baru pada tahap itu tetapi cukup tahu untuk tidak mendengarkan ilmuwan gila dan pergi dari sana sebelum saya meminta untuk mengambil alih proyek.
Dan ya, kami memberi tahu manajemen betapa buruknya praktik-praktik ini tetapi selalu mendapatkan yang biasa "membayar kontraktor ini dolar paling tinggi, ia harus tahu apa yang ia bicarakan".
sumber
\07
ke awal setiap file sekarang.i
digunakan untuk indeks array dalam satu prosedur dapat mengganggu dengani
dalam prosedur panggilan. Anda perlu menggunakanPRIVATE ALL LIKE m*
danPRIVATE i
untuk mencegah "membayangi" iniSatu lagi ledakan dari masa laluku.
Kutipan dari pemilik perusahaan:
Proyek Java adalah sistem perdagangan saham yang dirancang untuk menangani beberapa lusin saham, yang sekarang digunakan untuk memproses ribuan. Alih-alih mengatasi kekurangan desain atau perangkat keras yang buruk, seluruh perusahaan terpaksa mengubah semua aplikasi non C / C ++ menjadi C / C ++, dan semua pengembangan baru harus dalam C / C ++. Bahasa interpretatif berarti sesuatu yang tidak dikompilasi, dan pemilik hanya menganggap Assembler, C dan C ++ dikompilasi.
Untuk perusahaan 800 orang, di mana sebagian besar kode berada di Jawa dan Perl, ini berarti seluruh perusahaan menghabiskan sebagian besar waktu mereka selama beberapa tahun ke depan menulis ulang kode yang sangat bagus dalam C / C ++.
Cukup lucu, sekitar dua puluh tahun sebelum kegagalan ini, saya berada di perusahaan lain di mana pemimpin teknologi memutuskan bahwa logika penyortiran kami (itu adalah Bubble Sort) perlu direkam ulang dalam assembler alih-alih digantikan oleh Quick Sort karena - Algoritma melakukan tidak meningkatkan kinerja. Satu-satunya cara untuk meningkatkan kinerja adalah menulis ulang logika yang sama di assembler.
Dalam kedua kasus itu, saya pergi tak lama setelah dikte turun.
sumber
Seperti banyak programmer (tapi tidak cukup), saya benci dekorasi kode. Ini membuat saya marah ketika saya harus menggunakan awalan tanda dolar ($) untuk nama variabel, atau menggarisbawahi untuk variabel pribadi, bahkan tanpa getter / setter. Jika Anda perlu menghias kode Anda untuk memahaminya, maka Anda harus keluar!
sumber
Saya telah bekerja dengan sistem web untuk sementara waktu di mana semua parameter yang dilewati harus dinamai P1, P2, P3 dll. Tidak ada kesempatan di neraka untuk mengetahui apa yang mereka inginkan tanpa dokumentasi yang luas.
Juga - walaupun tidak sepenuhnya merupakan standar pengkodean - dalam sistem yang sama, setiap file diberi nama xyz0001.ext, xyz0002.ext, xyz0003.ext, dll - di mana xyz adalah kode untuk aplikasi itu sendiri.
sumber
Ini adalah waktu PANJANG yang lalu - 1976 tepatnya. Bos saya belum pernah mendengar tentang Edsger Dijkstra atau membaca masalah CACM, tetapi dia pernah mendengar desas-desus dari suatu tempat bahwa "GOTO itu buruk", jadi kami tidak diizinkan menggunakan GOTO dalam program COBOL kami. Ini sebelum COBOL menambahkan "end if", jadi pada saat itu hanya memiliki dua-dan-setengah dari tiga struktur kontrol klasik (urutan, jika / kemudian / lain, lakukan (yaitu lakukan saat)). Dengan enggan ia mengizinkan GOTO dalam program-program Dasar kami, dan memberikan instruksi cabang dalam program bahasa Assembler kami.
Maaf bahwa ini adalah semacam cerita "kamu harus ada di sana". Sejauh yang saya tahu, setiap bahasa yang ditemukan sejak tahun 1976 memiliki struktur kontrol yang memadai sehingga Anda tidak perlu menggunakan GOTO. Tetapi intinya adalah, bos tidak pernah tahu MENGAPA GOTO dianggap berbahaya, atau bahasa mana yang merupakan gangguan kekanak-kanakan dan yang merupakan penyakit fatal.
sumber
Saya bekerja dalam sebuah proyek adalah permintaan arsitek utama untuk menulis (terlalu) kode eksplisit. Salah satu contoh terburuk yang saya temukan dalam kode (dan dia dengan senang hati menyetujui) adalah sebagai berikut.
Bahkan ReSharper memberitahumu ini salah!
sumber
else
cabang final ( ) akan diambil.return verbose ? someString : someOtherString;
?Di pekerjaan terakhir saya, "standar" akan menjadi istilah yang sangat kuat untuk apa yang diberikan kepada saya oleh orang yang mempekerjakan saya. Memprogram situs web dalam ColdFusion dan SQL, saya diberi persyaratan pengkodean seperti:
Saya mulai mengubah ini begitu dia berhenti.
sumber
Dalam hidup saya sebagai pembuat kode C ++, dua "aturan" yang benar-benar jahat diberlakukan:
sumber
O(n^2)
serangan DOS (memberi makan input kasus terburuk). Juga mengapa itu tidak mungkin untuk beralih - itu sendiri adalah alasan yang sah untuk tidak menggunakan STL.Saya terpaksa memiliki dokumentasi XML untuk semua kelas dan anggota kelas. Termasuk pribadi. Saya terpaksa menggunakan komentar ghostdoc default.
sumber