it-swarm-id.com

Standar pengkodean terburuk yang pernah Anda ikuti?

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 yang 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 favorit Anda dan mengapa?


Beberapa contoh di sini

76
finnw

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.

97
JohnFx

Pernah seorang profesor yang menuntut kami memiliki setidaknya satu komentar untuk setiap baris kode.

//Set x to 3
var x = 3;

//if x is greater than 2
if(x>2){

    //Print x
    Print(x);
}

Itu sangat konyol.

129
Fishtoaster

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 di 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 memiliki daerah di sekitar satu baris, mis. harus melipat lipat 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 dari terburuk fitur yang pernah ditambahkan ke Visual Studio; itu mendorong penataan permukaan daripada struktur OO yang sebenarnya).

Saat ini, saya membunuh #REGIONs saat dilihat.

103
Cumbayah

Dalam satu pekerjaan kami terpaksa menggunakan beberapa bentuk aneh notasi Hungaria dalam database.

Saya tidak dapat mengingat detailnya, tetapi dari memori, setiap nama bidang harus berisi:

  • Tidak ada vokal
  • Semua huruf besar
  • Referensi ke tabel
  • Indikator tipe data
  • Panjang data
  • Indikator nullable

Misalnya, kolom dengan nama depan seseorang mungkin disebut: PRSNFRSTNMVC30X (Tabel orang, kolom Nama Depan, Varchar 30 karakter, Bukan Null)

80
Damovisa

Bersikeras bahwa semua kawat gigi harus diikuti oleh komentar untuk apa ujung kurung itu:

misalnya:

for (int i = 0; i < 10; i++)
{
    if (foo > bar)
    {
        printf("Foo greater than bar");
    } // End If (foo > bar)

    while (baz)
    {
       farb();
    } // End while (baz)
} // End For
48
Kris Erickson
#define AND  &&
#define OR   ||
#define EQ   ==

kata Nuff.

37
Niall C.
  • Nama variabel lokal semuanya huruf kecil tanpa garis bawah

Contoh nyata: paymentmethodtotalshtml, contracttypechangecontexts, customsegmentspectexts, potentialmsceventref

The New York Times berbobot :

“Ruang kata tidak boleh dianggap remeh. Bahasa Yunani Kuno, alfabet pertama yang menampilkan vokal, dapat diuraikan tanpa spasi Word jika Anda mengeluarkannya, dan melakukannya tanpa itu. [...] Latin juga tidak lagi memiliki kata-kata yang terpisah pada abad kedua. Kerugiannya membingungkan, karena mata harus bekerja lebih keras untuk membaca teks yang tidak terpisahkan. Tetapi seperti yang dijelaskan oleh paleografer Paul Saenger, dunia kuno tidak berhasrat make untuk membuat membaca lebih mudah dan lebih cepat. '"
37
John Siracusa

Saya diminta oleh pemimpin perangkat lunak perusahaan untuk melakukan "sederhana, ulangnkode dundant ". Itu dilarang, misalnya, untuk menambahkan parameter baru ke fungsi yang ada. Anda malah harus menduplikat fungsi, meninggalkan yang asli tidak tersentuh untuk menghindari regresi. Tidak ada pengujian formal tentu saja (pemborosan 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 dia dipecat (menganggap bahwa sangat, sangat sulit untuk memecat seseorang di Italia).

36
Wizard79

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:

  • Sangat menurun produktivitas Anda? MEMERIKSA. Tolong - cukup gunakan ORM .
  • Apakah awalnya termasuk untuk alasan yang baik tetapi disimpan lama setelah masalah asli menjadi tidak relevan? MEMERIKSA. Manajer adalah pengembang untuk server database 1000 tahun yang lalu dan memasukkan standar pengkodean ini.
  • Apakah ada dalam daftar yang begitu lama sehingga tidak mungkin untuk mengingat semuanya? MEMERIKSA. Ini termasuk 'sebanyak mungkin logika harus disimpan dalam database mungkin'.
  • Membuat Anda berpikir penulis hanya mencoba meninggalkan tanda mereka daripada mendorong praktik pengkodean yang baik? MEMERIKSA. Terus kembali ke manajer sebagai pengembang server database mantan.
  • Anda tidak tahu mengapa mereka dimasukkan? MEMERIKSA.
36
Jaco Pretorius

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.

33
David B

Notasi Hongaria

Sampel diekstraksi dari " penjelasan Charles Simonyi tentang konvensi penamaan pengenal notasi Hongaria " di MSDN.

1 #termasuk “sy.h” 
 2 extern int * rgwDic; 
 3 extern int bsyMac; 
 4 struct SY * PsySz (char sz []) 
 6 {
 7 char * pch; 
 8 int cch; 
 9 struct SY * psy, * PsyCreate (); 
 10 int * pbsy; 
 11 int cwSz; 
 12 unsigned wHash = 0; 
 13 pch = sz; 
 14 while (* pch! = 0 
 15 wHash = (wHash11 + * pch ++; 
 16 cch = pch-sz; 
 17 pbsy = & rgbsyHash [(wHash & 077777)% cwHash]; 
 18 untuk (; * pbsy! = 0; pbsy = & psy -> bsyNext) 
 19 {
 20 char * szSy; 
 21 szSy = (psy = (struct SY *) & rgwDic [* pbsy]) -> sz; 
 22 pch = sz; 
 23 sementara (* pch == * szSy ++) 
 24 {
 25 if (* pch ++ == 0) 
 26 kembali (psy); 
 27} 
 28} 
 29 cwSz = 0; 
 30 if (cch> = 2) 
 31 cwSz = ( cch-2/sizeof (int) +1; 
 32 * pbsy = (int *) (psy = PsyCreate (cwSY + cwSz)) -rgwDic; 
 33 Nol ((int *) psy, cwSY); 
 34 bltbyte (sz, psy-> sz, cch + 1); 
 35 return (psy) ; 
 36}
31
JD Frias

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.

28

Hampir lupa yang ini:

Kutipan dari seorang manajer:

Jangan memperbaiki atau mendokumentasikan bug dari masalah yang Anda temukan dalam kode Anda sendiri. Pelanggan akan membayar kami untuk mengidentifikasi dan memperbaikinya selama beberapa tahun ke depan.

Ini bukan untuk perangkat lunak konsumen, tetapi khusus untuk satu organisasi besar. Tak perlu dikatakan, pelanggan membayar selama bertahun-tahun sesudahnya. Mungkin terlihat sepele, tetapi mencoba mengabaikan bug lebih sulit daripada menemukannya.

26
David B

Komentar XML yang dipaksakan pada semua metode, konstanta, enum, dan properti non-pribadi.

Itu menyebabkan beberapa kode yang berantakan, terutama karena hasil akhirnya adalah orang-orang baik saja memukul /// untuk membuat tulisan rintisan kosong untuk semuanya atau menginstal GhostDoc dan menambahkan komentar yang dihasilkan secara otomatis:

/// <summary>
/// Validations the handler.
/// </summary>
/// <param name="propertyName">The property name.</param>
public void ValidationHandler(string propertyName) 
{
   // whatever
}

[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".

24
Adam Lear

Tidak 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 Subversion dan komentar checkin 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.

23
Jim A

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?

20
Jeremy Wiebe

Standar pengkodean terburuk yang pernah saya ikuti adalah basis kode yang tidak memilikinya sama sekali. Saya lebih suka mengikuti standar pengkodean yang saya benar-benar 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.

17
JaredPar

Memaksa komentar inline untuk kontrol versi adalah tentang standar pengkodean yang paling tidak berguna yang saya abaikan.

//Changed on 2/2/2004 By Ryan Roberts for work item #2323332
Dim Some Horrendous VB
//End Changed

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.

16
Ryan Roberts

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:

class MyClass
{
   public:
      void MyClass_Public_setValue(int value);
}
14
user1006

Saya memiliki pekerjaan bertahun-tahun yang lalu di mana semua kode kami harus rata kiri - tanpa 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.

9
Jeremy

Diperlukan untuk indentasi semua kode dengan empat spasi;)

9
RedFilter

Satu lagi ledakan dari masa laluku.

Kutipan dari pemilik perusahaan:

Tidak akan ada kode yang ditulis menggunakan bahasa interpretatif karena saya kehilangan 25 juta pada proyek {expletive} yang ditulis di Jawa.

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 dipaksa untuk mengonversi semua aplikasi non C/C++ ke 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 Java dan Perl, ini berarti seluruh perusahaan menghabiskan sebagian besar waktu mereka selama beberapa tahun ke depan menulis ulang kode yang sangat baik 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 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.

8
David B

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.

  • Semuanya dalam huruf besar. Maksudku segalanya, termasuk komentar langka yang dia buat.
  • Tidak ada lekukan.
  • Penamaan variabel adalah sesuatu di sepanjang garis APRGNAME. A = ruang lingkup variabel, misalnya P untuk publik, PRG = tiga karakter pertama dari file sumber yang membuat variabel, NAME = nama variabel dalam 6 karakter tersisa yang diizinkan oleh dBase/Clipper.
  • Panjang 4 dan 4 baris terakhir dari kode sumber adalah 80 * panjang. Mengapa? Jadi dia bisa mendengar printer dot matrix memulai dan menyelesaikan pencetakan file. Memori adalah seluruh program dicetak melalui mainframe mingguan, 20.000 halaman.
  • Saya yakin ada banyak lagi yang berhasil saya buang dari otak saya.

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".

8
Tim Murphy

Seperti banyak programmer (tapi tidak cukup), saya benci dekorasi kode. Itu 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!

6
Adam Harte

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 (mis. Lakukan sementara)). 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.

6
Mark Lutton

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.

private string DoSomething( bool verbose )
{
    if ( verbose ) { return someString; }
    else if ( !verbose ) { return otherString; }
    else { return string.Empty; }
}

Bahkan ReSharper mengatakan ini salah!

6
Jax

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.

6
CB Du Rietz

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:

  • Jangan gunakan termasuk. Saya suka satu halaman besar
  • Selalu pisahkan kata-kata dalam nama variabel dan kolom dengan garis bawah (kecuali tidak aktif, nama depan, dll.)
  • Jangan pernah menggunakan singkatan - selalu tuliskan firstname (dia sering menulis fname dan sebagainya)
  • Jangan gunakan nama yang membingungkan (seperti jumlah_charged dan charge_amount, yang mengukur hal-hal yang berbeda tetapi terkait)
  • Jangan gunakan DIVs , dan gunakan minimal CSS - gunakan tabel bersarang sebagai gantinya (saya menemukan kedalaman enam lapis, sekali) .
  • Jangan tembolok pertanyaan apa pun. Pernah.
  • Akan menggunakan variabel di lebih dari satu halaman? Lingkup aplikasi.
  • Setiap halaman adalah blok coba/tangkap sendiri. Kami tidak membutuhkan/menginginkan penangan kesalahan global.

Saya mulai mengubah ini begitu dia berhenti.

6
Ben Doom

Hampir segala jenis konvensi penamaan variabel yang mengulangi jenis variabel, mutabilitas, ruang lingkup/kelas penyimpanan, dan/atau referensi mereka. Pada dasarnya, setiap konstruk bersifat intrinsik dengan bahasa. Ini tidak lagi diperlukan di abad ke-21 dengan IDE modern (dan menurut saya hanya awalnya memecahkan tata letak/praktik kode yang buruk untuk memulai). Ini termasuk notasi hungaria dan variannya:

  • bigBlobStr - A string.
  • bigBlobStrCurLocPtr - Pointer ke "lokasi saat ini" di string tersebut.
  • someIntArray - Array of integer

atau hal-hal seperti:

  • e_globalHeading - Variabel eksternal
  • sg_prefPoolSz - Variabel global statis

dan tentu saja salah satu pemandangan pemandangan terjauh di OOP, m_ untuk semua anggota. Jika Anda tidak yakin/melacak variabel mana yang lokal, anggota, global, statis, atau final/const, Anda mungkin menulis tidak jelas , kode faktor buruk, kode spageti.

Ini sama sekali berbeda dari menentukan konvensi awalan/akhiran untuk hal-hal seperti min, max, rata-rata, ukuran, jumlah, indeks, dan sebagainya, yang baik-baik saja.

4
charstar

Saya terpaksa memiliki dokumentasi XML untuk semua kelas dan anggota kelas. Termasuk pribadi. Saya terpaksa menggunakan komentar ghostdoc default.

public class User 
{
    /// <summary>
    /// the _userID
    /// </summary>
    private int _userID;
}
4
Carl Bergquist

Standar terburuk yang pernah saya hadapi:

StyleCop untuk C #

Ambil setiap standar tak berguna yang pernah ada dan masukkan ke dalam alat yang berjalan pada waktu kompilasi alih-alih di IDE pada waktu desain.

//this is not a legal comment.
//  nor is this

// harus diikuti oleh satu spasi, jika Anda melakukan debug, gunakan //// untuk mengomentari kode. Properti juga harus memiliki komentar 'triple slash' dan mereka harus membaca "Mendapat atau Mengatur xxxxx" lengkap dengan periode di akhir dan dikapitalisasi dengan benar.

Ugh. Mungkin ada benarnya dengan API yang dipublikasikan secara luas tetapi daging sapi utama saya adalah mereka pasti bisa membuatnya sebagai plugin ala R #.

4
MIA

Saya bekerja untuk waktu yang singkat di Jepang. Saya melakukan pengkodean matematika yang rumit. Standar pengkodean perusahaan sama sekali tidak memiliki komentar. Itu sulit karena saya ingin menambahkan beberapa komentar untuk menjelaskan perhitungan yang rumit dan tidak melupakan diri sendiri setelah beberapa minggu. Kasihan orang berikutnya yang datang setelah saya untuk memahami apa yang dilakukan kode.

Itu adalah pertama kalinya saya melihat bahwa pengkodean komentar dilarang.

4
softveda

Pada pekerjaan sebelumnya, standar C # adalah memiliki setidaknya dua spasi antara nama tipe dan nama variabel dalam deklarasi, nama metode harus dimulai pada baris berikutnya dari pengubah akses dan tipe kembali, spasi harus terjadi sebelum tanda baca terbuka (tanda kurung atau kurung), semua deklarasi variabel pada awal metode, deklarasi terpisah dari penugasan dan lekukan adalah 3 spasi. Contoh:

private static int
ThisIsTheMethod (int  code, string  message)
{
   int  i;
   int  j;
   int  k;

   for (i = 0; i < message.Length; i++)
   {
      if (message [i] == '!') return -1;
   }

   j = SomeMethod (code);
   k = OtherMethod (j);

   return k;
}

Walaupun jelek, itu bisa diterapkan dengan pengecualian bahwa Visual Studio benar-benar tidak menginginkan hal-hal seperti itu dan itu lebih merupakan langkah tambahan setelah pengkodean "biasanya" untuk memformat ulang seperti ini.

3
Jesse C. Slicer

di pekerjaan saya sebelumnya, yang dengan senang hati saya hentikan 3 bulan lalu:

basis data:

  • Nama tabel harus huruf besar.
  • Nama tabel harus diawali dengan TBL_
  • Bidang harus diawali: DS_ (untuk varchar, yang tidak masuk akal) NU_ untuk angka CD_ untuk ("bidang bit") DT_ untuk tanggal
  • bidang basis data juga harus huruf besar [CD_ENABLED]
  • sama dengan nama sp [SP_INFINITY_USER_GROUPS_QRY] dan nama basis data [INFINITY]
  • apakah saya menyebutkan nama sp sebenarnya seperti itu? Awalan SP_, lalu nama basis data SP_INFINITY_ lalu nama tabel, SP_INFINITY_USER_GROUPS lalu apa yang sebenarnya diharapkan dilakukan oleh SP (QRY, UPD, DEL, INS) yesus, bahkan tidak membuat saya memulai pertanyaan yang bukan hanya pertanyaan CRUD.
  • semua bidang teks harus varchar (MAX), tegas.
  • angka dapat berupa int atau dobel, bahkan ketika Anda bisa menggunakan tipe lain.
  • bidang "boolean" (bit) adalah int, tanpa alasan.
  • prosedur tersimpan harus diawali dengan sp_productname_

asp.net/c #/javascript

  • SETIAP fungsi tunggal harus dibungkus coba {} catch {}, sehingga aplikasi tidak akan "meledak" (setidaknya itu adalah alasan resmi), bahkan ketika ini menghasilkan sesuatu yang tidak berfungsi dan tidak memiliki petunjuk mengapa.
  • parameter harus diawali dengan p, mis. pCount, pPage
  • variabel lingkup harus diawali dengan w (seperti dalam "bekerja", apa artinya itu?)
  • statika dengan g, dll.
  • semuanya memposting framework 1.1 adalah pembatas, seperti kamu punya kegunaan nyata untuk LINQ dan generics. (Saya membuat titik untuk menegakkan mereka agar saya menggunakan jquery, saya berhasil setidaknya,).
3
bevacqua

Inklusi wajib, perluasan informasi $ Log $ ketika SCC adalah versi kuno PVCS. Kami memiliki beberapa file di mana informasi $ Log $ jauh, jauh lebih lama daripada kode aktual dalam file.

3
Ian C.

Semua output dalam skrip PHP harus digaungkan baris demi baris.

<?php
echo "<div id=\"foo\">";
echo "<h1>" . $title . "</h1>";
echo paragraphs($body); // just an example
echo "</div>";
?>

(Penafian: Saya tidak harus mengikutinya, tetapi tim saya bekerja dengan melakukannya.)

3
sholsinger

The terburuk adalah proyek (C++) di mana kelas diawali dengan singkatan modul.

Misalnya, jika ada sesuatu dalam modul MessagePassing, dan bagian dari mekanisme Respon, itu bisa disebut MESPAS_RESSomeobject.

Mengerjakan kode itu membuat saya ingin mencungkil mata saya.


Bukan yang terburuk, tapi pekerjaan saya saat ini membutuhkan c_ awalan di kelas dan e_ awalan untuk enum. Tidak ada untuk struct. tapi _t postfix pada typedefs. Cukup jelek juga.

Oh, dan komentar fungsi header di KEDUA .h dan .cpp (deklarasi dan definisi) yang tentu saja hampir tidak pernah cocok.

3
µBio

Favorit saya adalah aturan "Tidak ada angka ajaib" yang diterapkan tanpa mengerti. Misalnya, saya pernah melihat komentar dalam ulasan kode yang menyatakan bahwa aturan "No magic numbers" dilanggar oleh baris kode ini:

if (fscanf(file, "%s %hd",name, nbrObject ) != 2 )

Saya kira resensi menginginkan konstanta bukannya 2, seperti #define TWO 2

3
Chalie Wax

Nama metode kami harus dalam format 'Get/Set/Add/Delete' + nama objek target + nama semua parameter.

GetUserById(userId);
InsertUser(user);
DeleteUser(user);

Cukup adil - tetapi aturannya sangat ketat. Jenis objek yang kompleks tidak boleh disingkat, dan operasi selalu harus mencantumkan setiap parameter permintaan, tidak peduli seberapa konyolnya:

GetCustomerOrderDeliveryDetailsByCustomerIdAndDeliveryDateAndOrderStatus(...

Setelah menambahkan nama variabel lengkap (yang juga tidak boleh dipersingkat), Anda dapat membayangkan berapa lama beberapa panggilan metode sederhana. Kata-kata panjang sekali.

3
Kirk Broadhurst

Di mana saya bekerja sekarang proses penamaan variabel untuk apa pun yang berhubungan dengan database adalah:

  • $ sql untuk pernyataan
  • $ hasil untuk hasil permintaan

Yang masuk akal, namun ketika saya mengemukakan bahwa konvensi itu terlalu umum dan bahwa ini akan berakhir dengan variabel tumpang tindih, jawabannya adalah "use result_alt or sql_alt." Perasaan saya berkomentar, jika Anda menggunakan nama variabel yang tepat yang menandakan tujuan Anda tidak perlu komentar atau sebanyak mungkin.

2
chrisw

Standar pengkodean terburuk yang pernah saya ikuti adalah "Semua nama variabel objek harus diawali dengan 'obj'". Ini ada pada proyek besar Java, jadi hampir semuanya adalah objek. Bagian terburuknya adalah, hampir semua orang mengadopsi kebijakan variabel penamaan dengan hanya menambahkan "obj" untuk nama kelas. Kami akhirnya dengan hal-hal seperti Person objPerson1 di seluruh kode. Saya keberatan sekali, dan menyuruh salah satu pengembang menyela bahwa dia menyukai konvensi "karena saya tidak perlu memikirkan nama variabel saya". Tempat itu benar-benar horrorshow ...

2
TMN

Mungkin standar pengkodean Perusahaan Perangkat Lunak Huawei. Mereka ingin Anda mendeklarasikan semua anggota publik :))

2
LostMohican

Menulis apa pun di Fortran ( WATFOR , FORTRAN 77 ) di mana karakter bukan spasi di kolom 1 adalah komentar, dan kompilator tidak memperingatkan Anda jika Anda melampaui kolom 72, itu hanya akan mengabaikannya.

Setidaknya saya hanya menghabiskan tujuh tahun melakukan ini.

2
Mark Thalman

Memiliki apa yang berjumlah file header C, dalam proyek Java.

Antarmuka ada karena beberapa alasan bagus, tetapi standar ini mengamanatkan antarmuka (foo.Java) untuk setiap kelas tunggal (fooImpl.Java) apakah itu masuk akal atau tidak. Banyak hal yang harus disinkronkan, gangguan lengkap metode klik-ke-Eclipse, pekerjaan yang sia-sia.

Sistem build memberlakukannya, tapi saya tidak bisa membayangkan apa tujuan awalnya. Untungnya kami membuangnya untuk kode baru ketika kami beralih ke kontrol versi baru dan membangun sistem, tetapi masih banyak tentang hal itu.

Pada saat yang sama kami juga membuang kebiasaan bodoh versi-control-info-in-file-comment yang sudah wajib.

2
user763

Saat ini saya bekerja di sebuah perusahaan di mana query SQL dilakukan melalui sesuatu yang disebut "Kelas Permintaan". Sungguh konyol:

Dalam "include/request.class.php"

class RequestClass
{
    // ... some code.

    public function getUser($where)
    {
        global $initrequest

        $sql = $initrequest['users']
        $sql.= $where;

        return execute($sql);
    }
}

Di initrequest.php:

$initrequest['users'] = 'SELECT * FROM users WHERE ';

Dan itu dipanggil dari aplikasi dengan cara ini:

$request = new request();
$tmpquery = "username = $username AND password = $password";
$request->getUsers($tmpquery);

Dan mereka memiliki sistem template serupa yang berbasis di "blok", tetapi setelah memahami apa yang saya perlihatkan di sini, saya terus menekan untuk membuang seluruh perangkat lunak kami dan menulis ulang di Symfony.

2
Arie Deckelmann

Tidak boleh lebih dari satu baris kode di Main ()

Seorang profesor di universitas saya yang saya cukup beruntung tidak bersikeras bahwa siswa junior C #-nya tidak diizinkan untuk memasukkan lebih dari satu baris kode di titik masuk aplikasi konsol mereka.

Ini masuk akal ketika mengembangkan aplikasi profesional, tetapi ketika satu-satunya tujuan program adalah untuk mengambil beberapa input dasar dan menghasilkan output tunggal (yaitu MultiplyTwoNumbers.exe), persyaratan seperti itu lebih menyakitkan daripada baik.

Di atas "satu baris kode di utama" profesor juga bersikeras bahwa setiap baris kode memiliki komentar deskriptif dan setiap anggota kelas memiliki nama deskriptif verbosely. Poin hilang jika profesor tidak merasa bahwa persyaratan ini telah dipenuhi "secara memadai".

Para siswa yang dipaksa untuk mematuhi aturan-aturan ini (hampir) semuanya pemula dalam pemrograman dan dengan demikian saya dapat melihat nilai dari menegakkan perilaku seperti penamaan yang baik dan pemisahan keprihatinan. Meskipun demikian, sebagai .NET Tutor di universitas saya, saya terus-menerus membantu murid-muridnya memenuhi persyaratan yang biasa dan menjengkelkan ini lama setelah mereka mendapatkan kode mereka berfungsi.

Menurut pendapat saya, ketika mendidik seseorang yang baru mengenal bahasa pemrograman, perhatian pertama adalah bagaimana membuat kode, bukan bagaimana membuat berbasis standar kode.

1
Nathan Taylor

+ Msgstr "Jangan gunakan gaya komentar C++ untuk kode C".

Meskipun ini mungkin masih memiliki nilai kecil jika ada risiko perlu untuk mem-porting program Anda ke kompiler yang sudah usang, sebagian besar hanya merepotkan. Keberatan terbesar saya adalah membuatnya sangat sulit untuk digunakan /* untuk memblokir komentar di wilayah besar selama pengembangan atau pengujian unit. */

1
AShelly

Dosen ADA saya di uni bersikeras bahwa setiap metode memiliki komentar yang menguraikan prasyarat, postkondisi, dan O besar. Masalah terbesarnya adalah dia tidak pernah repot-repot menjelaskan apa arti O besar sebenarnya dan tidak pernah memeriksa apakah benar, jadi saya mendapati diri saya menyalin dan menempelkan blok komentar ini ratusan kali.

-- Method_Name
-- PRECONDITIONS: none
-- POSTCONDITIONS: none
-- O(n) = n
1
Christopher

(C++)

Semua nilai kembali harus HRESULTS (yang standar - bukan hresult yang ditentukan pengguna)

Ini hanya beberapa tahun yang lalu. Orang-orang senior masih sangat tergila-gila dengan COM dan mereka tidak pernah membaca atau mempelajari praktik terbaik lainnya. Itu adalah lingkungan yang luar biasa tertutup.

Tempat yang sama juga tidak memungkinkan menggunakan STL.

Saya pergi tak lama setelah saya mengetahui berita gembira itu.

1
Tim

Dalam Visual Basic 6. , kami harus menambahkan blok penanganan kesalahan untuk setiap metode. Tidak ada pengecualian. Jadi kami melakukannya.

Kemudian kami harus menjelaskan mengapa sebagian aplikasi lambat.

1
Chris Brandsma

Ruang terbatas untuk nama variabel/objek mungkin adalah gangguan terbesar saya. Saya telah bekerja dalam bahasa yang relatif modern dan eksklusif yang hanya memungkinkan 10 karakter. Ini adalah peninggalan dari versi aslinya.

Hasil akhirnya adalah bahwa Anda berakhir dengan konvensi penamaan lucu yang mendefinisikan apa yang harus diwakili oleh setiap karakter dari 10 karakter yang Anda inginkan. Sesuatu seperti:

  • 1-3: awalan aplikasi
  • 4-6: awalan modul
  • 7-9: bagian yang ditentukan pengguna
  • 10: angka dalam kasus dua ... atau 9 dinamai hal yang sama.
1
Brad Gardner

Favorit saya harus menjadi pedoman penamaan basis data yang saat ini kami coba patuhi. Semua tabel yang digunakan untuk banyak-banyak hubungan harus dinamai menggunakan nama-nama tabel yang ditautkan dan harus diakhiri dengan "Tautan". Dan tentu saja, tidak ada pluralisasi nama tabel.

  • OrderLines? Nggak. Itu harus disebut OrderProductLink
  • Teman? Nggak. Itu harus PersonPersonLink
1
CodingInsomnia

Dipaksa menambahkan deskripsi file di setiap file (ini adalah C # proyek).

// --------------------------------------------------------------------------------------------------------------------
// <copyright file="User.cs" company="Company">
//   Copyright (C) 2009 Company. All rights reserved.
// </copyright>
// <summary>
//   The user.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
0
Carl Bergquist

Di satu perusahaan kami harus menulis dokumentasi teknis yang menjelaskan bagaimana kami akan menulis fungsionalitas. Cepat keluar-tanggal karena Anda tidak akan memikirkan segalanya ketika Anda pemrograman di UML.

0
IAdapter