Apa aturan standar pengkodean teraneh yang terpaksa Anda ikuti? [Tutup]


173

Ketika saya mengajukan pertanyaan ini, saya hampir selalu mendapat jawaban ya, Anda harus memiliki standar pengkodean.

Apa aturan standar pengkodean teraneh yang pernah dipaksa untuk Anda ikuti?

Dan yang paling aneh yang saya maksud paling lucu, atau terburuk, atau sekadar aneh.

Dalam setiap jawaban, harap sebutkan bahasa mana, ukuran tim Anda, dan efek buruk apa yang menyebabkan Anda dan tim Anda.


19
Setelah membaca daftar ini tiba-tiba saya merasa seperti memiliki karir yang sangat beruntung untuk menghindari omong kosong standar yang dipaksakan ini!
matt b

Lain kali saya mewawancarai pekerjaan, saya akan menelusuri pertanyaan ini untuk berfungsi sebagai "Bendera Merah. Lari!" indikator. Coding standar anti-pola, memang.
Stu Thompson

5
Dan saya malu mengakui bahwa di awal karir saya, saya memberi salah satu jawaban pada sebuah tim. Maafkan aku, teman-teman.
JasonFruit

Jawaban:


434

Saya benci ketika penggunaan beberapa pengembalian dilarang.


26
Apa maksud dari aturan ini? Secara pribadi saya akan gagal tinjauan kode untuk kode yang dapat dibuat lebih mudah dibaca dengan memasukkan kembali lainnya.
Mark Baker

22
Di sisi lain, menghilangkan opsi di awal seperti "jika (param == null) return null" dapat membersihkan kode Anda sedikit, untuk melarang ini daripada mendorongnya agak kriminal.
Bill K

39
Penanganan masalah: if (! Inisialisasi ()) {RetVal = ERR_BADINIT; goto ReturnPoint; } (lebih banyak kode) ReturnPoint: return RetVal; } Masalah terpecahkan! ;)
Marc Bernier

9
Hingga baru-baru ini, beberapa pengembalian dilarang. Kemudian fakta ini adalah sisa dari C, dianggap usang oleh C ++ RAII dan fungsi dengan ukuran kurang dari 15 baris, terungkap. Sejak itu, seperti Braveheart: "KEBEBASAN !!!!" ... :-p ...
paercebal

122
Pilihan Anda: beberapa pengembalian atau lebih jika pernyataan bersarang. Saya akan mengambil beberapa pengembalian.
Lance Fisher

333

membalikkan indentasi. Sebagai contoh:

    for(int i = 0; i < 10; i++)
        {
myFunc();
        }

dan:

    if(something)
        {
// do A
        }
    else
        {
// do B
    }

152
Ya Tuhan ... Bisakah saya bertemu dengan sosiopat yang datang dengan itu? Dia bisa mengajari saya satu atau dua hal tentang misantropi.
John Rudy

23
Itu tidak mungkin benar.
Dane

191
Setiap kali Anda membalik lekukan, Tuhan membunuh pengembang pemeliharaan.
Chris Vest

14
OMG, kamu bercanda?
Andrea Ambu

21
menghemat byte yang berharga ... tak ternilai, gunakan banyak
Spikolynn

326

Mungkin bukan yang paling aneh yang akan Anda dapatkan, tapi saya benar-benar sangat benci ketika saya harus membuka nama tabel database dengan 'tbl'


5
Bukankah ini hanya notasi Hongaria untuk DB?
ARKBAN

19
Bukankah itu seperti variabel awalan dengan var?
Brian R. Bondy

26
Dalam nada yang sama, saya benci ketika kolom ID dalam database diawali dengan nama tabel, seperti dalam tabel produk akan ada kolom productid. Redundansi yang terkadang membuat penulisan skrip tanpa ORM lebih sulit dari yang seharusnya
Andrew Ingram

30
Saya sebenarnya lebih suka kolom ID diawali dengan nama tabel. Membuat kueri penulisan sedikit lebih mudah. Dan untuk kunci asing Anda dapat memiliki bidang kunci asing sama dengan bidang kunci.
Craig

38
Pada catatan yang sama, saya benci ketika nama tabel harus tunggal. Naluri saya adalah memberi nama tabel yang berisi, katakanlah, pelanggan, "Pelanggan", bukan "Pelanggan". Kedengarannya kecil, sampai Anda menyadari semua masalah yang akan Anda simpan jika hanya Anda yang bisa menamai meja Anda "Transaksi", bukan "[Transaksi]".
Atario

248

Hampir semua jenis notasi hungaria.

Masalah dengan notasi Hongaria adalah bahwa hal itu sangat sering disalahpahami. Gagasan asli adalah untuk awalan variabel sehingga artinya jelas. Sebagai contoh:

int appCount = 0; // Number of apples.
int pearCount = 0; // Number of pears.

Tetapi kebanyakan orang menggunakannya untuk menentukan jenisnya.

int iAppleCount = 0; // Number of apples.
int iPearCount = 0;  // Number of pears.

Ini membingungkan, karena meskipun kedua bilangan bulat, semua orang tahu, Anda tidak dapat membandingkan apel dengan pir.


71
Lihat Joel ini di pos Perangkat Lunak tentang cara penggunaan notasi Hongaria yang tepat dapat membantu mengurangi bug: joelonsoftware.com/articles/Wrong.html
flicken

9
Tentu saja dengan menggunakan C ++ alih-alih C Anda dapat menulis kode sehingga kompiler memberi Anda kesalahan saat membandingkan apel dengan pir.
Andreas Magnusson

5
Ya, Joel benar. Saya berharap kompiler dapat dibuat untuk menegakkan versi Joel tentang itu.
Loren Pechtel

9
Bukankah seharusnya "int cntApples = 0; int cntPeas = 0;"? Yaitu. Awalan adalah variabel "jenis".
Blorgbeard keluar

42
Setidaknya yang pertama benar ... semuanya dengan "Apple" di dalamnya harus diawali dengan "i". ;)
Johannes Charra

240

Tidak ada operator ternary yang diizinkan di tempat saya bekerja saat ini:

int value = (a < b) ? a : b;

... karena tidak semua orang "mengerti". Jika Anda mengatakan kepada saya, "Jangan menggunakannya karena kami harus menulis ulang ketika strukturnya terlalu rumit" (operator ternary bersarang, siapa pun?), Maka saya akan mengerti. Tetapi ketika Anda memberi tahu saya bahwa beberapa pengembang tidak memahaminya ... um ... Tentu.


235
Oleh semua orang, bos Anda berarti dirinya sendiri.
Brian R. Bondy

13
Saya dulu jatuh ke kamp ini ... Tapi tumbuh keluar dari sana, dan telah belajar untuk mencintai operator bersyarat (bila sesuai).
John Rudy

22
Jika ada, aturannya harus "selalu menggunakan operator ternary", operator kecantikan murni :)
Bobby Jack

16
Saya menyukainya, tetapi alasan saya paling sering untuk tidak menggunakan adalah sama dengan pengalaman Anda "orang tidak akan memahaminya". Argumen saya adalah bahwa mereka seharusnya tidak bekerja jika mereka tidak dapat memahami konsep ...
Aidos

7
Bagaimana lagi Anda menginisialisasi variabel konstan tanpa menulis fungsi yang sama sekali baru (yang tidak akan banyak gunanya untuk dibaca). Penggunaan const untuk "variabel" lokal jauh lebih baik untuk memahami dan mengikuti kode daripada larangan operator ternary.
Andreas Magnusson

239

Untuk TIDAK PERNAH menghapus kode apa pun saat melakukan perubahan. Kami disuruh berkomentar semua perubahan. Ingatlah bahwa kami menggunakan kontrol sumber. Kebijakan ini tidak bertahan lama karena pengembang gempar tentang hal itu dan bagaimana hal itu membuat kode tidak dapat dibaca.


3
Aku benar-benar benci itu ... ada beberapa orang yang melakukannya di sini (itu bukan standar atau apa pun juga)
menggigil 42

7
Aturan seperti itulah mengapa saya merasa PERLU untuk mencetak kode sumber yang saya warisi dari orang lain dalam warna. Pada sepersekian halaman, itu tidak terlalu baik untuk perusahaan saya - tapi itu satu-satunya cara saya bisa membacanya jika saya harus mencetaknya. (Kami telah mewarisi banyak hal yang mengikuti aturan ini ...)
John Rudy

3
Kedengarannya seperti aturan yang dikembangkan kontrol sumber pra. Atau karena programmer hanya memeriksa seminggu sekali.
Craig

6
Saya suka membaca jawaban ini karena itu membuat pekerjaan saya tampak 100x lebih baik.
rjh

2
Rasakan Anda ... kami menggunakan SVN selama 4+ tahun, tetapi pengembang senior membencinya dan memeriksanya sekali dalam dua bulan, menghabiskan tiga hari berikutnya untuk kompromi tentang kode yang rusak: /
Viktor Svub

204

Saya pernah bekerja di bawah tirani Raja VB yang Perkasa .

The VB Raja adalah master murni MS Excel dan VBA, serta database ( Oleh karena itu nama keluarga: Dia bermain dengan Excel sedangkan pengembang bekerja dengan kompiler, dan menantang dia pada database bisa memiliki efek merugikan pada karir Anda ... ).

Tentu saja, keahliannya yang luar biasa memberinya visi unik tentang masalah-masalah pembangunan dan solusi manajemen proyek: Meskipun tidak persis mengkode standar dalam arti yang paling ketat, VB King secara teratur memiliki ide-ide baru tentang "standar pengkodean" dan "praktik terbaik" yang ia coba (dan seringkali berhasil) untuk memaksakan pada kita. Sebagai contoh:

  • Semua array C / C ++ harus dimulai pada indeks 1, bukan 0. Memang, penggunaan 0 sebagai indeks pertama array sudah usang, dan telah digantikan oleh manajemen indeks array berwawasan luas Visual Basic 6.

  • Semua fungsi akan mengembalikan kode kesalahan: Tidak ada pengecualian di VB6, jadi mengapa kita membutuhkannya? ( yaitu dalam C ++ )

  • Karena "Semua fungsi harus mengembalikan kode kesalahan" tidak praktis untuk fungsi yang mengembalikan tipe yang bermakna, semua fungsi harus memiliki kode kesalahan sebagai parameter [masuk / keluar] pertama.

  • Semua kode kami akan memeriksa kode kesalahan ( ini mengarah ke kasus terburuk VBScript jika-indentasi yang pernah saya lihat dalam karir saya ... Tentu saja, karena klausul "lain" tidak pernah ditangani, tidak ada kesalahan yang benar-benar ditemukan sampai terlambat) ).

  • Karena kami bekerja dengan C ++ / COM, mulai hari ini, kami akan mengkode semua fungsi utilitas DOM kami di Visual Basic.

  • Kesalahan ASP 115 adalah jahat. Untuk alasan ini, kami akan menggunakan On Error Resume Next dalam kode VBScript / ASP kami untuk menghindarinya.

  • XSL-T adalah bahasa berorientasi objek. Gunakan warisan untuk menyelesaikan masalah Anda ( kejutan bodoh hampir mematahkan rahang saya terbuka satu hari ini ).

  • Pengecualian tidak digunakan, dan karenanya harus dihapus. Untuk alasan ini, kami akan menghapus centang pada kotak centang yang meminta panggilan destruktor jika pengecualian dibatalkan ( butuh berhari-hari bagi seorang ahli untuk menemukan penyebab semua kebocoran memori itu, dan ia hampir mengamuk ketika mengetahui bahwa mereka telah dengan sengaja mengabaikannya (dan tersembunyi) catatan teknisnya tentang memeriksa opsi lagi, mengirim beberapa minggu sebelumnya ).

  • tangkap semua pengecualian di antarmuka COM modul COM kami, dan buang secara diam-diam ( dengan cara ini, alih-alih menabrak, modul hanya akan tampak lebih cepat ... Berkilau! ... Saat kami menggunakan penanganan kesalahan über yang dijelaskan di atas, bahkan kami butuh waktu untuk memahami apa yang sebenarnya terjadi ... Anda tidak dapat memiliki kecepatan dan hasil yang benar, bukan? ).

  • Mulai hari ini, basis kode kami akan dibagi menjadi empat cabang. Kami akan mengelola sinkronisasi mereka dan mengintegrasikan semua koreksi / evolusi bug dengan tangan.

Semua kecuali array C / C ++ , fungsi utilitas VB DOM dan XSL-T sebagai bahasa OOP dilaksanakan meskipun ada protes dari kami. Tentu saja, seiring berjalannya waktu, beberapa ditemukan, ahem , rusak, dan ditinggalkan sama sekali.

Tentu saja, kredibilitas Raja VB tidak pernah menderita untuk itu: Di antara manajemen yang lebih tinggi, ia tetap menjadi ahli teknis "senjata top" ...

Ini menghasilkan beberapa efek samping yang lucu, seperti yang Anda lihat dengan mengikuti tautan Apa komentar terbaik dalam kode sumber yang pernah Anda temui?


28
Re: Pengindeksan 1. Terkadang Anda hanya perlu berdiri dan mengatakan sesuatu yang kuat seperti "itu bodoh dan salah". Gambar garis di pasir. Lupakan menenangkan ego dan katakan saja. Saya hampir dapat menjamin bahwa setiap programmer lain yang berharga akan segera mulai mengangguk dan bergabung.
Kirk Strauser

31
@jrista: Jika ANDA TIDAK mengomentari ejaan teks saya, harap abaikan yang berikut ... ... ... ... ... ... ... ... Jika Anda mengomentari teks saya, tolong pertimbangkan (1) usulkan koreksi, (2) koreksi ejaan sendiri, atau (3) Pertimbangkan bahwa tidak semua pengembang di dunia (jauh dari itu) adalah penutur asli bahasa Inggris, jadi saya rasa mentoleransi pengejaan yang salah adalah minimum yang dapat Anda lakukan, atau buktikan Anda dapat melakukan yang lebih baik dengan mengirimkan saya terjemahan yang benar DI PERANCIS ... ^ _ ^ ...
paercebal

4
Jika orang ini adalah bos saya, saya akan langsung pergi ke setiap anggota manajemen yang lebih tinggi dengan daftar keluhan yang ditulis dan didokumentasikan dengan baik dan membuatnya dipecat. -1 karena tidak memiliki nyali untuk membela diri sendiri.
muusbolla

34
@muusbolla: Siapa yang memberitahumu kami tidak mengeluh? Itu meningkat sampai delegasi dua (termasuk saya) langsung ke CEO untuk menjelaskan masalah. Tapi saya menyesal harus memberi tahu Anda ada perbedaan antara dunia idealis, di mana keadilan berkuasa, dan dunia nyata, di mana beberapa bos percaya "manajemen tidak pernah salah, bahkan ketika itu ada", dan akan menghancurkan siapa pun yang akan berani menentang dogma itu. Satu-satunya suvenir bahagia yang saya miliki sejak saat itu adalah hari saya mengundurkan diri, hampir tiga tahun lalu, dan saya pria yang lebih bahagia sejak hari itu. Lagi pula, jika benar, alasan downmod Anda lemah. Maaf.
paercebal

7
@paercebal: En générale, c'est koreksi écrit, sauf que quelques petits erreurs: «squatch»: ça doit être «squash»; «This one day»: en ce context-là, di dirait «hari itu»; «Prosedur lengkap»: «prosedur penyimpanan»; «Chocked» s'écrit «choked». Aussi, dans les commentaires, vous utilisez ° mentionned », ce qui doit être« disebutkan »Tambahkan foto, tout ça ne justifie pas une telle plainte. Au contraire, vous y montrez une excellente maîtrise de l'anglais; félicitations!
intuited

131

Kembali di tahun 80-an / 90-an, saya bekerja untuk perusahaan simulator pesawat yang menggunakan FORTRAN. Kompiler FORTRAN kami memiliki batas 8 karakter untuk nama variabel. Standar pengkodean perusahaan disediakan tiga dari mereka untuk info gaya notasi Hungaria. Jadi kami harus mencoba dan membuat nama variabel yang bermakna hanya dengan 5 karakter!


17
Kemewahan: kami hanya memiliki 6 karakter; paket itu memiliki nama yang dimulai dengan g; semua fungsi internal dimulai gk; ada driver workstation dengan kode seperti 0p (jadi gk0p adalah permulaan), meninggalkan kita dua karakter untuk sisa nama Fortran. gk0paa, gk0pab, ...
Jonathan Leffler

103
"Ketika aku seusiamu, kami hanya memiliki 2 karakter! Dan itu case-insensitive!"
pookleblinky

53
Kami dulu harus bangun jam 2 pagi, 3 jam sebelum tidur, kemudian menulis kompiler kami sendiri dan membayar perusahaan untuk hak istimewa pergi bekerja. Kami hanya diizinkan huruf A untuk nama variabel kami. Kemudian bos kami akan menghapus kode kami dan menari di daftar kami menyanyikan haleluya.
David Arno

12
"50 pengidentifikasi yang mungkin harus cukup bagi siapa pun": p
Chris Vest

5
Heck, penerjemah BASIC yang pernah kami gunakan sebelumnya memiliki nama variabel dua karakter. Kenapa mengeluh sekitar 5?
David Thornley

107

Saya bekerja di tempat yang memiliki merger antara 2 perusahaan. Yang 'dominan' memiliki server utama yang ditulis dalam K&R C (yaitu pra-ANSI). Mereka memaksa tim-tim Java (dari kedua kantor - mungkin total 20 devs) untuk menggunakan format ini, yang dengan gembira mengabaikan 2 pilar dari "debat penjepit" dan langsung menjadi gila:

if ( x == y ) 
    {
    System.out.println("this is painful");
    x = 0;
    y++;
    }

18
Saya akan berpikir bahwa mempertahankan perbedaan visual yang lebih besar antara C dan Java akan membuat transisi lebih mudah. (+1 untuk "dan langsung menjadi gila.")
Jeffrey L Whitledge

4
Sepertinya gaya Whitesmiths yang digunakan dalam 'Pemrograman Windows' asli oleh Petzold - go figure! ;)
Bobby Jack

7
Saya menemukan ini gaya penyangga yang paling cerdas. Sayangnya, kebanyakan orang tidak menggunakannya. Jika kawat gigi memiliki makna semantik, mereka harus diperlakukan seperti itu, tidak terjebak di ujung garis dan diabaikan.
Ryan Lundy

7
@ Kyralessa. Saya tidak setuju ... Saya tidak tahu apakah kawat gigi memiliki makna semantik tetapi mereka bisa mempengaruhi pencocokan pola dan rasa ruang. IMO, versi ini kehilangan itu sepenuhnya. misalnya saya ingin bookmark saya mencolek ke luar buku, tidak rata dengan halaman.
Michael Easter

6
Ini sebenarnya gaya pilihan saya, tetapi semua yang ada di dunia (terutama Visual Studio) default ke mode lain, jadi saya sudah menyerah. Mengapa saya menyukainya? Kawat gigi adalah "bagian dari" kode yang terkandung - mereka memaksanya untuk "terlihat seperti" pernyataan tunggal ke if, yang sesuai dengan harapan.
Atario

104

Terlarang:

while (true) {

Diizinkan:

for (;;) {

4
Orang lain berpendapat bahwa for (;;) {ini adalah Idiom C untuk yang pertama.
Robert P

69
Jika saya memahami smiley modern, fangled baru dengan benar, standar ini membuat orang miskin, terlalu banyak bekerja untuk pernyataan menangis!
Ben Blank

15
Ini adalah aturan de facto di sini. VC6 mengeluarkan peringatan kompiler tentang while (true), tetapi bukan tentang untuk (;;). Kalau tidak, mereka setara. Jadi kami memilih yang bebas peringatan.
user9876

22
Bjarne S. mengatakan dalam bukunya, "untuk (;;) harus dibaca selamanya". Jika itu cukup baik untuk pembuat C ++, itu harus cukup baik untuk Anda. :-)
Frank Krueger

58
Dalam program C pertama yang saya kerjakan, seseorang telah menambahkan #define ever (;;) sehingga Anda dapat mengatakan "selama-lamanya {...}"
James Curran

101

seorang teman saya - kami akan memanggilnya CodeMonkey - mendapatkan pekerjaan pertamanya dari perguruan tinggi [ bertahun- tahun lalu] melakukan pengembangan in-house di COBOL. Program pertamanya ditolak karena 'tidak memenuhi standar kami' karena menggunakan ... [gemetar!] Pernyataan IF bersarang

standar pengkodean melarang penggunaan pernyataan IF bersarang

sekarang, CodeMonkey tidak malu-malu dan yakin akan kemampuannya, jadi dia bersikeras meminta semua orang menaiki rantai dan menyusuri lorong mengapa aturan ini ada. Sebagian besar menyatakan bahwa mereka tidak tahu, beberapa mengarang 'keterbacaan', dan akhirnya satu orang mengingat alasan aslinya: versi pertama dari kompiler COBOL yang mereka gunakan memiliki bug dan tidak menangani pernyataan IF bersarang dengan benar.

Bug kompiler ini, tentu saja, telah diperbaiki selama setidaknya satu dekade, tetapi tidak ada yang menantang standar . [baaa!]

CodeMonkey berhasil mengubah standar - pada akhirnya!


7
Steven, ini mengingatkan saya pada kisah percobaan monyet: o) freekvermeulen.blogspot.com/2008/08/…
Nick Dandoulakis

5
@ [Nick D]: ya, saya juga - maka nama kode "CodeMonkey" ;-)
Steven A. Lowe


Alasannya mungkin salah, tetapi masih bagus untuk menghindari ifs bersarang - c2.com/cgi/wiki?ArrowAntiPattern
manojlds

97

Pernah bekerja pada proyek di mana garis bawah dilarang. Dan maksud saya benar-benar dilarang. Jadi di aplikasi ac # winforms, setiap kali kami menambahkan event handler baru (mis. Untuk sebuah tombol) kami harus mengganti nama nama metode default dari buttonName_Click () menjadi sesuatu yang lain, hanya untuk memuaskan ego orang yang menulis coding standar. Sampai hari ini saya tidak tahu apa yang dimilikinya terhadap garis bawah yang sederhana


23
Mungkin _ rusak pada keyboard-nya;)
Roman Plášil

139
buttonNameUnderscoreClick ()
vitule

9
Memiliki efek samping yang disayangkan yaitu mencegah penggunaan FILE dan LINE untuk debugging. Dan # jika __cplusplus extern "C" di file header. Dan tipe integral di stdint.h. Dan size_t.
Steve Jessop

8
Untung ini C # lalu
konfigurator

4
Saya serius mencegah garis bawah (meskipun tidak dalam kasus OP yang tercantum di atas. Ini adalah tambahan dua penekanan tombol (shift + _) yang saya lebih suka tidak memakai saya ketika kasus pascal atau unta akan baik-baik saja.
TGnat

92

Konvensi penamaan database yang sama sekali tidak berguna. Setiap nama tabel harus dimulai dengan angka. Angka-angka menunjukkan jenis data apa yang ada dalam tabel.

  • 0: data yang digunakan di mana-mana
  • 1: data yang digunakan oleh modul tertentu saja
  • 2: tabel pencarian
  • 3: kalender, obrolan dan surat
  • 4: logging

Ini menyulitkan untuk menemukan tabel jika Anda hanya tahu huruf pertama dari namanya. Juga - karena ini adalah database mssql - kita harus mengelilingi nama-nama tab dengan tanda kurung di mana-mana.

-- doesn't work
select * from 0examples;

-- does work
select * from [0examples];

65
Saya minta maaf, sangat menyesal ...
Kirk Strauser

1
Wow - bagus. Saya kira menggunakan Surat itu keluar dari pertanyaan? Bukan berarti itu ide yang bagus juga, tetapi setidaknya Anda tidak perlu mengutip semua nama tabel.
Mark Brittingham

keberatan membingungkan ... siapa yang datang dengan itu? dba?
dotjoe

90

Kami sedang melakukan proyek C ++ dan pemimpin tim adalah seorang pria Pascal.

Jadi kami memiliki standar pengkodean termasuk file untuk mendefinisikan kembali semua sintaks C dan C ++ yang sial:

#define BEGIN {
#define END }

tapi tunggu ada lagi!

#define ENDIF }
#define CASE switch

dll. Sulit untuk diingat setelah sekian lama.

Ini mengambil kode C ++ yang bisa dibaca dengan sempurna dan membuatnya tidak terbaca oleh siapa pun kecuali pemimpin tim.

Kami juga harus menggunakan notasi Hungaria terbalik, yaitu

MyClass *class_pt  // pt = pointer to type

UINT32 maxHops_u   // u = uint32

meskipun anehnya saya tumbuh seperti ini.


22
Membangun kode yang tidak dapat
dipertahankan

2
Notasi Hungaria dilakukan dengan benar tidak apa-apa. Dilakukan salah ... ick. Sistem tipe yang tepat mengalahkan keduanya.
Thelema

5
Anda tahu, saya pikir saya bersama Anda dalam hal itu. Kutil hungaria hampir tidak bisa ditolak ketika ditempelkan di ujung seperti itu.
TED

haha membawa saya kembali ke hari-hari ketika saya beralih dari Pascal ke C ++ (sekitar 16 tahun yang lalu). Setiap kali saya melihat {saya harus secara mental berkata pada diri sendiri "{berarti BEGIN". Setidaknya bagi saya itu hanya di kepala saya.
thomasrutter

6
Ketika saya bekerja dalam dukungan MS VC ++, kami memiliki beberapa pelanggan mengirimkan kode repro yang ditulis seperti ini. Butuh beberapa saat bagi kita untuk menyadari bahwa itu sebenarnya dalam C ++ (mereka tidak termasuk #defines).
JBRWilkinson

88

Di pekerjaan sebelumnya:

  • Tabel "normal" dimulai dengan T_
  • Tabel "sistem" (biasanya pencarian) dimulai dengan TS_ (kecuali ketika mereka tidak melakukannya karena seseorang tidak merasa seperti itu hari itu)
  • Tabel referensi silang dimulai dengan TSX_
  • Semua nama bidang dimulai dengan F_

Ya itu betul. Semua bidang, di setiap tabel. Sehingga kita bisa tahu itu bidang.


dan Anda tidak punya awalan khusus untuk bidang kunci utama ???
Czimi

2
@ Czimi: Saya lupa menyebutkan itu. Setiap tabel memiliki bidang yang disebut FI_ID yang digunakan sebagai kunci utama.
Jeromy Irvine

31
Astaga ... T_guy yang menciptakan mimpi buruk ini harus dibunuh dengan F_gun dan dikirim ke TSX_hell.
Sergey Skoblikov

3
Kami memiliki tbl dan fld untuk semua bidang dan tabel. Sama sekali tidak berguna ...
konfigurator

5
@configurator: Anda memiliki "tbl" untuk semua bidang dan "fld" untuk semua tabel? :-)))
Timwi

84

Seorang teman saya menemukan aturan ini saat bekerja di pekerjaan pemerintah. Penggunaan ++ (sebelum atau sesudah) sepenuhnya dilarang. Alasannya: Kompiler yang berbeda mungkin menafsirkannya secara berbeda.


5
Nah, pada titik itu Anda mungkin juga menyerah, kan?
Kirk Strauser

90
Seseorang digigit karena tidak memahami perbedaan antara postfix dan prefix, diklaim sebagai kompiler bug, kemudian menimpanya pada orang lain, pikir saya.
Bernard

5
Sebenarnya, mereka benar, dalam beberapa keadaan. Larangan tampaknya sedikit di atas sekalipun. Ambil contoh, baris: a [i] = i ++; saya dapat bertambah sebelum digunakan untuk mengindeks, atau setelah. Bahasa tidak mendefinisikan ini.
TED

9
Dia benar - urutan operasi tidak dijamin ketika Anda menggunakan variabel yang sama di tempat lain dalam pernyataan. Hanya larangan kode yang berpotensi ambigu, tidak semua penggunaannya!
Loren Pechtel

2
Mungkin juga dilarang =karena dapat digunakan untuk menyebabkan perilaku yang tidak terdefinisi.
konfigurator

81

Setengah dari tim menyukai indentasi empat ruang; setengah lainnya menyukai lekukan dua-ruang.

Seperti yang bisa Anda tebak, standar pengkodean diamanatkan tiga, sehingga "menyinggung semua sama" (kutipan langsung).


42
Karena itulah identifikasi tab sangat bagus. Setiap orang dapat mengubah ukuran di editornya;)
xardias

41
Ya, lekukan tab sangat bagus ... sampai Anda benar-benar membuka file orang lain, dan menemukan hal-hal yang tidak selaras karena spasi tercampur di tempat yang seharusnya tidak ada, atau tidak tercampur di tempat yang seharusnya. Kemudian Anda memformat ulang secara otomatis, dan kontrol versi berbeda menjadi jelek. Ugh.
Alan Hensel

41
itu sebabnya Anda seharusnya menggunakan hanya tab untuk membuat indentasi, dan hanya spasi untuk menyelaraskan, dan tidak pernah keduanya bertemu. dan jika Anda akan membuat perubahan ke spasi putih dalam file, maka itu harus menjadi satu-satunya perubahan yang Anda buat untuk check-in tertentu.
joh6nn

16
... dan itu tidak pernah berhasil. : P
Robert P

10
Untuk "menyinggung semua sama" ... Saya menyukainya. Saya harus mengingat ini pada saat berikutnya saya entah bagaimana terlibat dalam perang standardisasi lekukan.
Michael Burr

74

Tidak dapat menggunakan Refleksi karena manajer mengklaim itu melibatkan terlalu banyak 'sihir'.


10
Ya, sihir itu sulit dipertahankan, tampaknya;) LOL.
Rik

19
Itu mungkin aturan yang tepat, untuk alasan yang salah :)
Bobby Jack

71
untuk membaca kinerja 'ajaib' membunuh kode mimpi buruk yang tidak dapat dipelihara. Dia benar.
gbjbaanb

4
Saya kira Anda tidak diizinkan untuk kode di Net sama sekali. Lagi pula, banyak cara kerangka kerja dijalankan melalui refleksi.
NotMe

5
Hancurkan para penyihir itu !! Selalu ada, dengan sihir mereka , mencuri pekerjaan kita, merayu wanita kita dan merusak anak-anak kita!
ZJR

71

Yang paling aneh yang saya miliki, dan yang membuat saya cukup lama untuk digulingkan, adalah ketika pemilik perusahaan kami menuntut agar produk baru kami hanya IE. Jika itu bisa bekerja pada FireFox, itu OK, tapi itu harus IE saja.

Ini mungkin kedengarannya tidak aneh, kecuali satu cacat kecil. Semua perangkat lunak itu untuk paket perangkat lunak server yang dipesan lebih dahulu, berjalan di Linux, dan semua kotak klien yang dibeli pelanggan kami adalah Linux. Pendek mencoba untuk mencari tahu cara mendapatkan Wine (pada masa itu, sangat tidak bisa diandalkan) dan berjalan di semua kotak ini dan melihat apakah kita bisa menjalankan IE dan melatih admin mereka bagaimana cara debug masalah Wine, itu tidak mungkin untuk memenuhi permintaan pemilik. Masalahnya adalah dia melakukan desain Web dan tidak tahu bagaimana membuat situs Web sesuai dengan FireFox.

Mungkin tidak akan mengejutkan Anda mengetahui bahwa perusahaan kami bangkrut.


1
Saya akan mengatakan, itu sangat aneh.
Brad Gilbert

14
Tiga sorakan untuk kapitalisme!
starblue

46
Yay untuk bertahan hidup yang paling cocok ... orang ini tidak pantas menjalankan bisnis perangkat lunaknya sendiri.
Mark Brittingham

10
Kalimat terakhir sangat bagus. Bagaimana seseorang bisa dianggap serius ketika mereka membuat keputusan seperti ini?
Tn. Shickadance

54

Menggunakan nama pengidentifikasi bernomor generik

Pada pekerjaan saya saat ini, kami memiliki dua aturan yang benar-benar berarti:

Aturan 1: Setiap kali kita membuat bidang baru dalam tabel database kita harus menambahkan bidang cadangan tambahan untuk penggunaan di masa mendatang. Bidang cadangan ini diberi nomor (karena tidak ada yang tahu data mana yang akan mereka pegang suatu hari nanti) Pada saat kita membutuhkan bidang baru, pertama-tama kita mencari bidang cadangan yang tidak digunakan.

Jadi kita berakhir dengan customer.reserve_field_14berisi alamat email pelanggan.

Pada suatu hari bos kami berpikir tentang memperkenalkan tabel cadangan , tetapi untungnya kami bisa meyakinkan dia untuk tidak melakukannya.

Aturan 2: Salah satu produk kami ditulis dalam VB6 dan VB6 memiliki batas jumlah total nama pengenal yang berbeda dan karena kodenya sangat besar, kami terus-menerus mengalami batasan ini. Sebagai "solusi" semua nama variabel lokal diberi nomor:

  • Lvarlong1
  • Lvarlong2
  • Lvarstr1
  • ...

Meskipun itu secara efektif menghindari batas pengenal, kedua aturan ini digabungkan menghasilkan kode yang indah seperti ini:

...

If Lvarbool1 Then
  Lvarbool2 = True
End If

If Lvarbool2 Or Lvarstr1 <> Lvarstr5 Then
  db.Execute("DELETE FROM customer WHERE " _ 
      & "reserve_field_12 = '" & Lvarstr1 & "'")
End If

...

Anda dapat membayangkan betapa sulitnya memperbaiki kode lama atau orang lain ...

Pembaruan terbaru: Sekarang kami juga menggunakan "prosedur cadangan" untuk anggota pribadi:

Private Sub LSub1(Lvarlong1 As Long, Lvarstr1 As String)
  If Lvarlong1 >= 0 Then 
    Lvarbool1 = LFunc1(Lvarstr1)
  Else
    Lvarbool1 = LFunc6()
  End If
  If Lvarbool1 Then
    LSub4 Lvarstr1
  End If
End Sub

EDIT: Tampaknya pola kode ini menjadi semakin populer. Lihat posting The Daily WTF ini untuk mempelajari lebih lanjut: Astigmatisme :)


10
Tidak bercanda. Saya yakin butuh selamanya untuk melewati dan menghapus semua suntikan SQL. ;-)
Kirk Strauser

Itu adalah kejahatan murni. Saya yakin bos Anda / TL adalah tuan hanya menunggu kesempatannya.
Manuel Ferreria

5
omg, siapa yang akan membuat aturan seperti ini ??? yang paling penting: bagaimana tim Anda mengatur kode ??
hasen

2
Saya pikir maksudnya Anda akan memilih semua bidang secara default sehingga Anda mendapatkan semua bidang 'cadangan' juga, tanpa harus menentukan semuanya.
Tn. Shickadance

2
maibe Anda dapat menggunakan kode preprosessing, di mana Anda akan menulis kode Anda menggunakan nama variabel yang bermakna dan kemudian menggantinya dengan "yang benar" sebelum mengkompilasi beberapa hari seperti '% s / email / reserve_field_12 / g';)
João Portela

53

Kembali ke hari C ++ saya, kami tidak diizinkan menggunakan ==,> =, <=, &&, dll. Ada makro untuk ini ...

if (bob EQ 7 AND alice LEQ 10)
{
   // blah
}

ini jelas untuk berurusan dengan "tugas lama yang tidak disengaja dalam bug bersyarat", namun kami juga memiliki aturan "menempatkan konstanta di atas variabel", jadi

if (NULL EQ ptr); //ok
if (ptr EQ NULL); //not ok

Baru ingat, standar pengkodean paling sederhana yang pernah saya dengar adalah "Tulis kode seolah-olah pemelihara berikutnya adalah seorang psikopat ganas yang tahu di mana Anda tinggal."


1
rofl .. menulis fortran dalam C.
Robert Paulson

saya masih melakukan null == variabel dalam c #. Aku tahu aku tidak perlu khawatir tentang itu, tetapi aku tidak bisa menahan diri. jika saya melihatnya sebaliknya saya merasa gugup. kebiasaan susah hilang.
Troy Howard

Yang terakhir tentang psikopat akan membuat beberapa orang terbunuh segera.
Tn. Shickadance

31
+1 untuk psikopat ganas.
rcollyer

Saat memposting kode di forum, kadang-kadang saya akan menggunakan hal-hal seperti LT dan SHL, untuk menghindari agar operator tidak menjadi HTML.
supercat

45

Notasi Hungaria secara umum.


11
Yah, saya suka H / N untuk kontrol pada halaman. Jauh lebih mudah untuk menemukan semua kontrol kotak teks di dropdown IntelliSense ketika semua yang harus saya cari adalah txtFooBar.
cciotti

20
Notasi HUngarian tidak jahat, hanya perlu digunakan dengan benar joelonsoftware.com/articles/Wrong.html
Czimi

1
Saya akan mengakui sehubungan dengan kontrol. Maka notasi Hongaria dapat membantu. Secara umum, saya pikir notasi Hongaria sudah usang, dan umumnya disalahgunakan. Itu telah melayang dari niat aslinya.
vfilby

9
Benar-benar disalahgunakan, ya. Salah, tidak.
Loren Pechtel

2
Banyak orang memulai nama antarmuka dengan I, IEnumerable, IList ... Dalam .Net framework al antarmuka dimulai dengan I.
tuinstoel

43

Saya sudah memiliki banyak aturan bodoh , tetapi tidak banyak yang saya anggap benar-benar aneh.

Yang paling konyol adalah pada pekerjaan NASA saya bekerja kembali pada awal 90-an. Ini adalah pekerjaan besar, dengan lebih dari 100 pengembang di dalamnya. Pengembang berpengalaman yang menulis standar pengkodean memutuskan bahwa setiap file sumber harus dimulai dengan akronim empat huruf, dan huruf pertama harus mewakili grup yang bertanggung jawab atas file tersebut. Ini mungkin ide yang bagus untuk proyek-proyek FORTRAN 77 yang dulu.

Namun, ini adalah proyek Ada , dengan struktur perpustakaan hierarkis yang bagus, sehingga tidak masuk akal sama sekali. Setiap direktori penuh dengan file yang dimulai dengan huruf yang sama, diikuti oleh 3 lebih banyak omong kosong, garis bawah, dan kemudian bagian dari nama file yang penting. Semua paket Ada harus dimulai dengan kutil lima karakter yang sama. Klausa "use" Ada juga tidak diizinkan (bisa dibilang hal yang baik dalam keadaan normal), jadi itu berarti referensi ke pengenal apa pun yang bukan lokal ke file sumber juga harus menyertakan kutil yang tidak berguna ini. Mungkin seharusnya ada pemberontakan atas ini, tetapi seluruh proyek dikelola oleh programmer junior dan baru dari karyawan baru kuliah (saya sendiri yang terakhir).

Pernyataan penugasan tipikal (sudah verbose di Ada) akhirnya akan terlihat seperti ini:

NABC_The_Package_Name.X := NABC_The_Package_Name.X + 
  CXYZ_Some_Other_Package_Name.Delta_X;

Untungnya mereka setidaknya cukup tercerahkan untuk memungkinkan kami lebih dari 80 kolom! Namun, fasilitas kutil itu cukup dibenci sehingga menjadi kode boilerplate di bagian atas file sumber semua orang untuk menggunakan Ada "nama" untuk menyingkirkan kutil. Akan ada satu nama untuk setiap paket yang diimpor ("withed"). Seperti ini:

package Package_Name renames NABC_Package_Name;
package Some_Other_Package_Name renames CXYZ_Some_Other_Package_Name;
--// Repeated in this vein for an average of 10 lines or so

Apa yang lebih kreatif di antara kami lakukan adalah mencoba menggunakan kutil untuk membuat nama paket yang masuk akal (atau konyol). (Saya tahu apa yang Anda pikirkan, tetapi bahan peledak tidak diizinkan dan membuat Anda malu! Itu menjijikkan). Sebagai contoh, saya berada di C ommon kelompok kode, dan saya butuhkan untuk membuat paket untuk antarmuka dengan W kelompok orkstation. Setelah sesi curah pendapat dengan orang Workstation, kami memutuskan untuk memberi nama paket kami sehingga seseorang yang membutuhkan keduanya harus menulis:

with CANT_Interface_Package;
with WONT_Interface_Package;

1
Dengan semua itu dan NASA masih belum dapat menentukan apakah akan menghitung dalam kilometer atau mil ...
NotMe

16
Sial, dan saya benar-benar berpikir Anda akan keluar semua dan menggunakan konvensi penamaan paket CUN * _ dan W * NK_. Maaf, saya memiliki turet yang membakar dengan lambat, eksplosif, dan tekstual. Tapi milikmu jauh, jauh, lucu!
defmeta

41

Ketika saya mulai bekerja di satu tempat, dan mulai memasukkan kode saya ke kontrol sumber, bos saya tiba-tiba mendatangi saya, dan meminta saya untuk berhenti melakukan begitu banyak hal. Dia mengatakan kepada saya bahwa tidak disarankan untuk melakukan lebih dari 1 komit per hari untuk pengembang karena itu mengotori kontrol sumber. Aku hanya menganga padanya ...

Kemudian saya mengerti bahwa alasan dia bahkan mendatangi saya tentang hal itu adalah karena server SVN akan mengiriminya (dan 10 eksekutif lebih tinggi) surat untuk setiap komit yang dibuat seseorang. Dan dengan mengotori kontrol sumber, kurasa dia menulis kotak suratnya.


Sorot email, klik hapus, selesai
TheLQ

Saya jelas bukan penggemar yang disebut "chunky check-in". Komit ketika perubahan Anda selesai, sesederhana itu. Saya juga suka berkomitmen pada akhir hari kerja karena itu menegaskan dalam pikiran saya bahwa kode saya harus dapat dikompilasi dan setidaknya dapat dijalankan dengan sisa proyek untuk coders lain keesokan paginya.
Jesse C. Slicer

2
Dapatkan yang terbaik dari kedua dunia - Berkomitmen ke cabang lokal Anda kapan pun Anda tidak ingin kehilangan sesuatu. Rebase dan remas komit-komit itu ketika Anda siap untuk menjadikannya master. (maafkan terminologi git - Saya yakin itu mungkin dalam lincah dan banyak sistem lain juga)
Michael Anderson

Saya setuju dengan semua hal di atas. Ini masalah yang berakar mendekati kontrol versi. Tidak memiliki solusi teknologi. Saya mempertimbangkan untuk pindah ke git-svn, yang memungkinkan saya untuk bekerja dengan repositori lokal dan kemudian mendorong beberapa hal ke repositori SVN, tetapi itu hanya akan mengirim email untuk semua tugas harian saya dalam satu batch besar, dan akan diselesaikan tidak ada apa-apa untuk bos saya.
Avihu Turzion

34

Melakukan semua kueri basis data melalui prosedur tersimpan di Sql Server 2000. Dari kueri multi-tabel kompleks hingga yang sederhana seperti:

select id, name from people

Argumen yang mendukung prosedur adalah:

  • Performa
  • Keamanan
  • Maintabilitas

Saya tahu bahwa topik prosedurnya cukup kontroversial, jadi jangan ragu untuk menilai jawaban saya secara negatif;)


2
Maintainability dapat ditingkatkan jika nama tabel dan kolom tidak unik, tetapi nama SP adalah. Ini bisa membuat referensi kode lebih mudah ditemukan. Jika ada yang lain, keuntungan rawatan yang lebih baik, saya tidak menyadarinya. Keamanan adalah alasan utama untuk menggunakan SP.
Jeffrey L Whitledge

2
Saya setuju bahwa untuk tujuan umum ini bukan 100% wtf, tetapi lihat tautan ini: codinghorror.com/blog/archives/000292.html
azkotoki

2
"Keamanan adalah alasan utama untuk menggunakan SP" Tidak. Tidak ada tentang SP di SQL Server yang lebih aman. Mereka hanya aman ketika dipanggil sebagai query paremeter, yang dapat dilakukan dengan SQL dinamis.
Flory

4
Nah: sprocs bermanfaat. Meskipun kadang-kadang bisa terasa menyebalkan, Anda akhirnya menulis antarmuka database yang lebih baik dan lebih dapat digunakan kembali. DBA Anda juga dapat memiliki waktu lebih mudah menganalisis masalah kinerja dan dapat memperbarui sistem produksi tanpa perubahan kode aplikasi. Saya tidak menganjurkan logika bisnis dalam sprocs.
Robert Paulson

4
mengubur pertanyaan dalam kode yang dikompilasi sangat menyebalkan, saya 100% di belakang 100% kebijakan sprocs untuk abstraksi saja
annakata

33

Harus ada 165 unit test (tidak harus otomatis) per 1000 baris kode. Itu berhasil pada satu tes untuk kira-kira setiap 8 baris.

Tak perlu dikatakan, beberapa baris kode cukup panjang, dan fungsinya mengembalikan pointer ini untuk memungkinkan chaining.


Bagaimana pengujian unit tidak otomatis.
pupeno

Bagaimana mereka menghasilkan angka ajaib 8?
Rohit

1
Apa yang terjadi jika Anda memiliki 164? 166?
Daniel Daranas

8
Lebih mirip 6 baris.
rekursif

1
Itu tergantung pada seberapa halus tes Anda juga saya kira. Saya akan mempertimbangkan function(x).should == 2untuk menjadi tes tunggal, sedangkan yang lain akan menggabungkan 10 dari mereka bersama-sama dan menyebutnya tes tunggal.
Orion Edwards

30

Kami harus mengurutkan semua fungsi dalam kelas sesuai abjad, untuk membuatnya "lebih mudah ditemukan". Sudahlah ide itu drop-down. Itu terlalu banyak klik.

(pemimpin teknologi yang sama menulis aplikasi untuk menghapus semua komentar dari kode sumber kami).


3
Ya tentu saja, karena komentar hanya kacau, dan pikirkan berapa banyak siklus yang disimpan oleh pra-prosesor pada waktu kompilasi! (Aplikasi ini bahkan lebih lucu dari aturan. Bagus.)
ojrac

7
Tentu saja! Pengembang seharusnya menulis kode, tidak membuang waktu menulis komentar :)
Daniel Rikowski

2
Ya! Dan komentar membuat pembangunan menjadi lebih lambat!
Greg D

2
Namun demikian saya pikir ini adalah aturan yang baik untuk mengurutkan anggota berdasarkan tipe (bidang, properti, metode) dan dengan nama
abatishchev

3
Saya mengurutkan metode, anggota, dll. Sesuai abjad dalam grup masing-masing, di header dan sumber ... tetapi hanya karena saya obsesif.
Jon Purdy

29

Pada tahun 1987, saya menerima pekerjaan di sebuah perusahaan yang mempekerjakan saya karena saya adalah salah satu dari segelintir orang yang tahu bagaimana menggunakan Wahyu. Revelation, jika Anda belum pernah mendengarnya, pada dasarnya adalah implementasi sistem operasi Pick berbasis PC - yang, jika Anda belum pernah mendengarnya, mendapatkan namanya dari penemunya, Dick Pick yang bernama luar biasa. Banyak yang bisa dikatakan tentang Pick OS, sebagian besar bagus. Sejumlah vendor supermini (setidaknya Prime dan MIPS) menggunakan Pick, atau implementasi kustom mereka sendiri.

Perusahaan ini adalah toko Perdana, dan untuk sistem in-house mereka, mereka menggunakan Informasi. (Tidak, itu benar-benar namanya: itu adalah implementasi Prime Pick.) Mereka memiliki kontrak dengan negara untuk membangun sistem berbasis PC, dan telah menempatkan sekitar satu tahun ke dalam proyek Wahyu mereka sebelum orang itu melakukan semua pekerjaan, yang juga direktur SIM mereka, memutuskan dia tidak bisa melakukan kedua pekerjaan lagi dan mempekerjakan saya.

Bagaimanapun, ia telah menetapkan sejumlah standar pengkodean untuk perangkat lunak berbasis Prime mereka, banyak di antaranya berasal dari dua kondisi dasar: 1) penggunaan terminal bisu 80-kolom, dan 2) fakta bahwa sejak Prime tidak "Aku tidak punya editor visual," tulisnya sendiri. Karena portabilitasnya yang ajaib dari kode Pick, ia membawa editornya turun ke Revelation, dan telah membangun seluruh proyek pada PC yang menggunakannya.

Wahyu, tentu saja, karena berbasis PC, memiliki editor layar penuh yang sangat bagus, dan tidak keberatan ketika Anda melewati kolom 80. Namun, selama beberapa bulan pertama saya di sana, dia bersikeras bahwa saya menggunakan editor dan standarnya.

Jadi, standar pertama adalah bahwa setiap baris kode harus dikomentari. Setiap baris. Tidak ada pengecualian. Alasannya adalah bahwa bahkan jika komentar Anda mengatakan dengan tepat apa yang baru saja Anda tulis dalam kode, harus berkomentar berarti Anda setidaknya memikirkan kalimat itu dua kali. Juga, ketika dia dengan riang menunjukkan, dia telah menambahkan perintah ke editor yang memformat setiap baris kode sehingga Anda bisa memberikan komentar akhir.

Oh ya. Ketika Anda mengomentari setiap baris kode, itu dengan komentar end-of-line . Singkatnya, 64 karakter pertama dari setiap baris adalah untuk kode, lalu ada titik koma, dan kemudian Anda memiliki 15 karakter untuk menggambarkan apa yang dilakukan 64 karakter Anda. Singkatnya, kami menggunakan konvensi bahasa assembly untuk memformat kode Pilih / Dasar kami. Ini menyebabkan hal-hal yang terlihat seperti ini:

EVENT.LIST[DATE.INDEX][-1] = _         ;ADD THE MOST RECENT EVENT
   EVENTS[LEN(EVENTS)]                 ;TO THE END OF EVENT LIST

(Sebenarnya, setelah 20 tahun saya akhirnya lupa sintaksis garis-kelanjutan R / Basic, jadi mungkin terlihat berbeda. Tetapi Anda mendapatkan idenya.)

Selain itu, setiap kali Anda harus memasukkan komentar multiline, aturannya adalah Anda menggunakan kotak bunga:

************************************************************************
**  IN CASE YOU NEVER HEARD OF ONE, OR COULDN'T GUESS FROM ITS NAME,  **
**  THIS IS A FLOWER BOX.                                             **
************************************************************************

Ya, tanda bintang yang menutup pada setiap baris diperlukan. Lagi pula, jika Anda menggunakan editornya, itu hanya perintah editor sederhana untuk menyisipkan kotak bunga.

Membuatnya mengalah dan membiarkan saya menggunakan editor bawaan Revelation cukup sulit. Awalnya dia ngotot, hanya karena itu aturannya. Ketika saya keberatan bahwa a) saya sudah tahu editor Wahyu b) itu jauh lebih fungsional daripada editornya, c) pengembang Wahyu lainnya akan memiliki perspektif yang sama, dia menjawab bahwa jika saya tidak melatih editornya saya tidak akan pernah dapat bekerja pada basis kode Prime, yang, seperti yang kita berdua tahu, tidak akan terjadi selama neraka tetap tidak beku lagi. Akhirnya dia menyerah.

Tetapi standar pengkodean adalah yang terakhir pergi. Komentar kotak-bunga khususnya adalah buang-buang waktu, dan dia bertarung denganku, mengatakan bahwa jika aku hanya menggunakan editor yang tepat, mempertahankannya akan sangat mudah. (Semuanya menjadi sangat pasif-agresif.) Akhirnya saya diam-diam menyerah, dan sejak saat itu pada semua kode yang saya bawa ke ulasan kode memiliki komentar kotak bunga yang berharga.

Suatu hari, beberapa bulan di pekerjaan, ketika saya telah membuktikan diri saya lebih dari kompeten (terutama dibandingkan dengan parade coders luar biasa yang melewati kantor itu ketika saya bekerja di sana), dia melihat dari balik bahu saya ketika saya bekerja, dan dia perhatikan saya tidak menggunakan komentar kotak bunga. Oh, saya katakan, saya menulis formatter kode sumber yang mengubah komentar saya menjadi gaya Anda ketika saya mencetaknya. Lebih mudah daripada mempertahankannya di editor. Dia membuka mulut, berpikir sejenak, menutupnya, pergi, dan kami tidak pernah berbicara tentang standar pengkodean lagi. Kedua pekerjaan kami menjadi lebih mudah setelah itu.


14
+1 untuk formatter komentar saat mencetak
BradC

1
Kotak bunga harus TIDAK PERNAH digunakan secara berlebihan. Saya benci ketika saya membaca kode, oke komentar yang bagus, kemudian melihat kotak bunga berteriak "INI, INI DAN INI DAN INI"
TheLQ

26

Pada pekerjaan pertama saya, semua program C, tidak peduli seberapa sederhana atau kompleks, hanya memiliki empat fungsi. Anda memiliki utama, yang disebut tiga fungsi lainnya secara bergantian. Saya tidak dapat mengingat nama mereka, tetapi mereka adalah sesuatu di sepanjang baris begin (), middle (), dan end (). begin () membuka file dan koneksi basis data, end () menutupnya, dan middle () melakukan yang lainnya . Tak perlu dikatakan, middle () adalah fungsi yang sangat panjang.

Dan hanya untuk membuat segalanya lebih baik, semua variabel harus bersifat global.

Salah satu kenangan paling bangga saya tentang pekerjaan itu adalah menjadi bagian dari pemberontakan umum yang menyebabkan penghancuran standar-standar itu.


2
Saya kira di atas kertas di ruang rapat kedengarannya bagus, tapi saya kasihan programmer yang harus mengikutinya
TheLQ

Pasti dirancang oleh guru bahasa Inggris.
yodie

Pasti dirancang oleh programmer COBOL.
Bruno

Harus menggunakan banyak goto.
new123456

26

Standar pengkodean C yang ditulis secara eksternal yang memiliki aturan 'jangan mengandalkan prioritas operator bawaan, selalu gunakan tanda kurung'

Cukup adil, niat yang jelas adalah untuk melarang:

a = 3 + 6 * 2;

mendukung:

a = 3 + (6 * 2);

Masalahnya, ini ditegakkan oleh alat yang mengikuti aturan sintaks C yang '=', '==', '.' dan akses array adalah operator. Jadi kode seperti:

a[i].x += b[i].y + d - 7;

harus ditulis sebagai:

((a[i]).x) += (((b[i]).y + d) - 7);

2
mungkin (((a) [(i)]). x) + = (((((b) [(i)]). y) + (d)) - (7)); ?
Behrooz
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.