Apakah perusahaan Anda memiliki standar pengkodean? [Tutup]

31

Saya baru-baru ini melihat bahwa Microsoft merilis dokumen standar pengkodean ( All-In-One Code Framework Standar Pengkodean ) dan itu membuat saya berpikir ... Perusahaan tempat saya bekerja tidak memiliki standar pengkodean formal sama sekali. Hanya ada beberapa pengembang dan kami telah bersama cukup lama untuk berevolusi menjadi gaya yang serupa dan tidak pernah menjadi masalah.

Apakah perusahaan tempat Anda bekerja memiliki standar pengkodean yang terdokumentasi? Jika tidak, mengapa tidak? Apakah memiliki standar membuat perbedaan? Apakah layak menulis standar dari awal atau haruskah Anda mengadopsi standar lain sebagai milik Anda (mis., Menjadikan standar Microsoft sebagai milik Anda)?

Walter
sumber
Tampaknya ada masalah dengan tautan (hampir 6 tahun) dalam pertanyaan ini. Menurut halaman di sini: 1code.codeplex.com , beranda Microsoft All-In-One Code Framework telah dimigrasikan ke blogs.msdn.com/b/onecode . Saya belum menyelidiki halaman blog MSDN untuk melihat (jika atau) di mana standar dapat diakses.
Kevin Fegan

Jawaban:

39

Penting bagi tim untuk memiliki standar pengkodean tunggal untuk setiap bahasa untuk menghindari beberapa masalah:

  • Kurangnya standar dapat membuat kode Anda tidak dapat dibaca.
  • Ketidaksepakatan atas standar dapat menyebabkan perang antar pengembang.
  • Melihat standar yang berbeda di kelas yang sama bisa sangat menjengkelkan.

Saya penggemar berat apa yang dikatakan Paman Bob tentang standar:

  1. Biarkan mereka berkembang selama beberapa iterasi pertama.
  2. Biarkan mereka menjadi tim khusus, bukan khusus perusahaan.
  3. Jangan menuliskannya jika Anda bisa menghindarinya. Alih-alih, biarkan kode menjadi cara standar ditangkap.
  4. Jangan membuat undang-undang desain yang bagus. (mis. jangan bilang orang tidak menggunakan goto)
  5. Pastikan semua orang tahu bahwa standarnya adalah tentang komunikasi, dan tidak ada yang lain.
  6. Setelah beberapa iterasi pertama, buat tim bersama untuk memutuskan.
Paddyslacker
sumber
3
+1 untuk mengutip Paman Bob. dan +1 (jika saya bisa) untuk saran TIDAK menuliskannya.
Walter
21
Mengapa tidak menuliskannya?
Fishtoaster
8
@Fishtoaster - Idenya adalah bahwa kode itu sendiri mendokumentasikan standar. Sama seperti dokumentasi desain yang sering tidak dipelihara ketika kode berubah, dokumen standar pengkodean terperinci akan keluar dari sinkronisasi dengan kode ketika standar berkembang. Apa yang kami lakukan adalah memilih beberapa modul yang representatif dan menggunakannya sebagai pedoman. Ada baiknya menulis dokumen pengantar singkat (kami menggunakan wiki dan tautan ke kode aktual) yang menunjukkan di mana Anda menemukan kode yang representatif.
Paddyslacker
Ok, kode-dokumen-standar masuk akal jika Anda menganggap standar sering berkembang. Itu menimbulkan pertanyaan mengapa standar Anda berkembang. Alasan terbesar yang dapat saya pikirkan untuk memiliki standar pengkodean adalah konsistensi, yang tidak Anda dapatkan jika standarnya berkembang.
Fishtoaster
Jika standar dimiliki oleh tim, maka tim harus dapat mengembangkan standar dari waktu ke waktu. Jika tidak, Anda akan berakhir dengan standar sebagai ide satu orang, atau dengan beberapa saran kuno yang saat ini sedang didokumentasikan dalam pertanyaan ini: programmers.stackexchange.com/questions/1338/…
Paddyslacker
8

Saya pikir sangat penting untuk memiliki standar pengkodean, bahkan jika semua yang dikatakannya adalah "kita menggunakan lekukan 3-ruang dan tanda kurung buka ke baris berikutnya." Beberapa manfaat:

  • Itu membuat membaca seluruh basis kode jauh lebih mudah, karena beralih di antara gaya pengkodean antar file mengganggu.
  • Itu membuat membaca satu file lebih mudah, karena setiap file yang diperbarui oleh dua pengembang dengan gaya yang saling bertentangan pada akhirnya akan cenderung untuk membuat gaya-gaya tersebut dicampur. Membaca file yang memadukan tab dan spasi (dan mengeditnya nanti) adalah hal yang menyebalkan.
  • Ini membuat lebih mudah bagi pengembang baru untuk menggunakan gaya yang baik jika ada standar eksplisit, daripada yang tersirat.
  • Konvensi penamaan yang konsisten membuatnya lebih mudah untuk menemukan fungsi / variabel. Apakah ArraySort atau array_Sort atau sortTheArray atau doSortArray atau ...?

Dalam hal apakah akan mengadopsi standar yang ada, itu tidak terlalu penting - konsistensi adalah yang penting. Jika pengembang Anda memiliki selusin gaya yang berbeda, Anda mungkin juga memilih yang sudah ada, diterbitkan. Jika Anda semua telah berevolusi menjadi gaya yang cukup konsisten, tulis saja dan gunakan itu.

Fishtoaster
sumber
5

Saya tidak setuju dengan "kami toko X" jadi kami memformat kode kami dalam semua bahasa dengan cara yang sama.

Secara pribadi saya telah menemukan bahwa sebagian besar bahasa memiliki gaya penerimaan yang berbeda.

Saya sangat tidak tahan ketika programmer C menulis kode Java dengan format C. Tidak hanya tidak terlihat seperti Java, tetapi juga membodohi mereka dengan berpikir bahwa mereka dapat menggunakan praktik mirip-C lainnya di Jawa.

Saya pikir jika Anda memiliki standar itu harus per bahasa

sylvanaar
sumber
1
+1. Objective-C saya tidak terlihat SEMUA seperti PHP saya.
Dan Ray
2

Mantan majikan saya memiliki standar pengkodean. Saya sedang mempertimbangkan untuk secara resmi mendokumentasikan satu untuk saya sendiri.

Atau, seperti yang Anda sarankan, menemukan standar yang ada yang layak dan memodifikasi / mengadopsi itu. Untuk sebuah perusahaan, saya pasti akan menyarankan agar mereka melihat standar pengkodean yang ada, tetapi membuat / memodifikasi satu untuk kebutuhan khusus mereka sendiri. Tidak perlu membuat dari awal, tetapi harus berhati-hati untuk memastikan bahwa standar pengkodean masuk akal untuk jenis perangkat lunak yang dibuat perusahaan.

Ya, memiliki standar pengkodean membuat perbedaan, tetapi itu bukan peluru perak. Kode lebih terbaca karena tidak ada banyak gaya yang berbenturan dan beberapa kesalahan umum dapat dihindari. Bahkan dengan standar Anda akan memiliki beberapa variasi dalam gaya pengkodean, tetapi variabilitas itu akan berkurang. Tujuannya bukan untuk mencoba menghindari semua variasi atau bersiap untuk setiap situasi yang mungkin. Terlalu rumit standar pengkodean bisa lebih buruk daripada tidak sama sekali.

George Marian
sumber
1

Sayangnya tidak. Jadi setiap orang memiliki caranya sendiri untuk menggunakan spasi, lekukan, dan sebagainya, semuanya tercampur (dengan cara ini kita bahkan tidak harus menggunakan fungsi "menyalahkan" untuk mengetahui siapa yang merupakan pembuat sebaris kode!)

Tetapi, yang terburuk, seseorang menulis nama variabel dan kelas dalam bahasa Italia, orang lain dalam bahasa Inggris ...

Saya selalu menyesuaikan gaya saya dengan bahasa, perpustakaan, dan kerangka kerja yang saya gunakan, sehingga kode sumber terlihat seragam dan polos.

Wizard79
sumber
3
Aduh, saya bahkan tidak pernah mempertimbangkan beberapa bahasa ... itu pasti sulit.
Walter
1

Perlu diingat bahwa ini adalah dokumen standar pengkodean yang khusus untuk Kerangka Kode All-In-One.

Saya telah bekerja di berbagai perusahaan, beberapa di antaranya memiliki standar yang ada dan beberapa (sebagian besar) di antaranya saya membantu mengembangkan standar. Untuk sebagian besar, jika Anda melakukan pengembangan berbasis .NET (dan bahkan jika Anda tidak, sebagian besar aturan masih berlaku) Anda harus melihat pada Pedoman Desain Kerangka . Meskipun ini khusus untuk menulis API yang menghadap publik, sebagian besar pedoman berlaku sama baiknya untuk kode apa pun.

Perhatian terbesar dengan standar kode adalah menjaganya agar tetap sederhana dan mudah. Anda ingin pengembang dapat menginternalisasi pedoman yang disajikan, sehingga memberi mereka dokumen lebih dari 50 halaman tidak berguna. Anda masih dapat membuat dokumen itu jika Anda ingin memberikan latar belakang, contoh, dll. Tetapi Anda juga ingin sesuatu yang bermuara pada seperangkat pedoman bulletted. Standar pengkodean Anda juga harus fleksibel, dokumen hidup yang perlu diubah seiring perubahan teknologi.

Scott Dorman
sumber
1
Ya, saya mengerti bahwa dokumen yang saya referensikan khusus untuk Kerangka Pengkodean All-In-One, tapi itu adalah asal-usul untuk pertanyaan yang keluar dari membacanya.
Walter
1

Diskusi Pengodean Standar membahas hal ini:

  • Ya, Anda membutuhkannya, konsistensi dan kode bersih adalah landasan pengembangan yang baik.
  • Apa yang mereka hampir tidak masalah, asalkan semua orang mengikuti standar yang sama.
  • Jangan menulis sendiri, Anda berakhir dalam diskusi tanpa akhir dan menyakitkan. Ada banyak di luar sana yang populer.
  • Menggunakan standar publik (seperti yang ada di MSDN ) memberi Anda pihak ke-3 agnostik yang tidak dapat diperdebatkan. Jika Anda ingin berdebat dengan mereka, lihat poin 2.

Jika Anda berkembang dalam C # di Visual Studio, maka StyleCop adalah peluru perak. Jika Anda juga menggunakan ReSharper, maka plugin StyleCop untuk ReSharper sangat luar biasa.

dwynne
sumber
1

Kami adalah toko blub, jadi kami menggunakan konvensi pemrograman blub.

Sekarang Paul Graham dan teman-temannya jauh lebih pintar dari kita, tetapi kita programmer blub, kita semua bisa saling membaca blub, pada kenyataannya, setiap programmer blub dapat membaca kode blub kita.

Faktanya, karena desain blub, setiap programmer blub dapat membaca file blub tunggal dan memahaminya, karena blub tidak memiliki sistem makro.

Jika kita memprogram dalam katakanlah, C atau C ++ (kita semua multibahasa, meskipun kita memprogram di blub) kita menggunakan sebagian besar gaya blub untuk kode baru, atau untuk hal-hal sumber terbuka, standar dari proyek yang sedang kita kerjakan.

Tim Williscroft
sumber
1

Anda memerlukan satu standar. Saya telah melihat standar berbeda di berbagai sudut aplikasi yang memiliki lead berbeda yang semuanya ingin melakukannya dengan "cara mereka". Mungkin konsep "standar" disalahpahami. Sangat gila. Dan, standar terburuk dihasilkan oleh satu orang. Tidak masalah siapa orang itu, jika satu orang saja yang mengembangkan standar, itu hampir pasti buruk.

segera
sumber
1

Ini dapat membantu orang, juga dapat sangat membantu dengan alat:

Jika Anda ingin dapat menggunakan pemformatan kode otomatis apa pun, Anda benar-benar harus membakukan aturan yang akan digunakan, jika tidak, Anda akan selalu mendapatkan banyak perubahan pemformatan yang tidak berarti yang mengacaukan diff Anda.

Aturan default yang ditetapkan untuk alat analisis statis mungkin memeriksa gaya penamaan tertentu, dan mungkin lebih mudah untuk menyesuaikan dengan itu kemudian menulis banyak aturan baru. (kecuali jika Anda hanya mematikan aturan sama sekali)

terakhir adalah baik untuk menstandarkan apa pun yang perlu dikonsultasikan dengan seseorang di luar tim Anda. yaitu Anda mungkin ingin pemberitahuan hak cipta standar di header Anda karena Anda tidak ingin menjalankan setiap file baru yang Anda tulis melewati tim hukum perusahaan Anda, dan Anda tentu ingin mendapatkan nama-nama API publik apa pun dengan benar saat pertama kali

jk.
sumber