Apakah gaya pengkodean dalam organisasi adalah hal opsional?

30

Dokumen gaya pemrograman ini memiliki aturan umum, yang mengatakan:

Aturan bisa dilanggar jika ada keberatan pribadi yang kuat terhadap mereka.

Ini bertabrakan dengan cara saya berpikir, dan ada banyak artikel yang mengatakan bahwa gaya pengkodean sebenarnya penting. Misalnya ini mengatakan:

Dokumen standar pengkodean memberi tahu pengembang bagaimana mereka harus menulis kode mereka. Alih-alih setiap pengembang mengkode dengan gaya pilihan mereka sendiri, mereka akan menulis semua kode dengan standar yang diuraikan dalam dokumen. Ini memastikan bahwa proyek besar dikodekan dengan gaya yang konsisten - bagian tidak ditulis secara berbeda oleh programmer yang berbeda. Solusi ini tidak hanya membuat kode lebih mudah dipahami, tetapi juga memastikan bahwa setiap pengembang yang melihat kode akan tahu apa yang diharapkan di seluruh aplikasi.

Jadi, apakah saya salah memahami sesuatu dari dokumen ini dan kutipan di bagian atas pertanyaan ini? Bisakah orang benar-benar mengabaikan gaya pengkodean?


Mungkin saya tidak cukup jelas, jadi dengan suntingan ini, saya akan mengklarifikasi sedikit.

Saya menulis dokumen gaya pengkodean untuk tim kami, dan saya ingin memeriksa gaya menggunakan beberapa analisis statis. Jika gagal, Jenkins akan mengirim email. Dan saya ingin gagal meninjau kode, jika gayanya tidak cocok. Ini jelas bertabrakan dengan kutipan pertama.

Tetapi kemudian, jika kutipan itu benar, apa gunanya dokumen gaya pengkodean, jika ada yang bisa melakukan apa pun yang mereka inginkan?

BЈовић
sumber
Jawabannya, jelas, adalah: itu tergantung. Semua jawaban di bawah ini tepat untuk tim yang berbeda di perusahaan yang berbeda yang memiliki budaya yang berbeda. Apa pun yang Anda usulkan harus sesuai dengan apa yang akan dicapai oleh tim - dan Anda harus memiliki gagasan tentang ini karena Anda tentu saja akan mendiskusikannya secara informal dengan anggota tim baik secara individu atau dalam kelompok kecil. Secara pribadi saya lebih suka a) apa pun yang saya dapat dengan mudah mengatur opsi untuk di Emacs, Visual Studio, dan IntelliJ IDEA, dan b) sama sekali tidak ada tab keras dalam file dalam keadaan apa pun! Untuk semua hal lain, apa pun yang diinginkan tim itu ok.
davidbak
Menurut pendapat saya, jika Anda menulis panduan maka Anda telah kehilangan pertempuran. Tidak mungkin Anda bisa menghasilkan dokumen resmi yang akan dibaca oleh pengembang. IDE modern hadir dengan serangkaian gaya. Pilih satu dan menyebutnya referensi Anda.
Cerad
Style doc yang Anda tautkan adalah "a" yang disarankan doc style coding; itu bukan "the" style doc. Jika Anda membuat dokumen situs Anda, gunakan yang ini sejauh cocok. Jika Anda memiliki keberatan, maka ubah dokumen Anda sesuai. Misalnya, tinggalkan pernyataan yang tidak Anda sukai.
user2338816
"Aturan bisa dilanggar jika ada keberatan pribadi yang kuat terhadap mereka." Terkadang ini merupakan pertimbangan politis: fase 1 adalah opt-in. Tanpanya seorang rekan kerja sekolah-tua mungkin akan membunuh gagasan standar kode sepenuhnya.
brian_o

Jawaban:

12

Sejauh yang saya tahu, pernyataan yang membingungkan Anda adalah kompromi pragmatis yang dibuat agar pedoman untuk melayani audiens seluas mungkin. Bergantung pada konteks spesifik Anda (lebih banyak tentang itu di bawah), Anda mungkin memiliki opsi untuk menyesuaikannya dan menggunakan pedoman ini dengan lebih efisien.

Anda lihat, pedoman merujuk pada "keberatan pribadi yang kuat" sebagai sarana untuk membenarkan pelanggaran. Keberatan semacam itu bukanlah sesuatu yang bisa diabaikan begitu saja, terutama jika ini berasal dari pengembang berpengalaman.

Keberatan ini mungkin salah, ingatkan Anda, tetapi (dan ini sangat TETAPI BESAR), mereka juga dapat menunjukkan bahwa aturan tertentu salah - baik secara umum atau dalam konteks proyek tertentu (salah satu contoh ketidakcocokan aturan adalah persyaratan untuk menyediakan login terperinci dalam kode kritis kinerja).

Saya pikir bahwa setiap panduan gaya yang masuk akal harus mempertimbangkan hal di atas dan mencoba mengakomodasi kemungkinan kebutuhan untuk menyesuaikan diri. Sekarang, jika panduan yang membingungkan Anda hanya ditargetkan untuk tim dewasa dengan proses dan lingkungan yang efisien dan halus, itu dapat dinyatakan jauh lebih tidak ambigu, misalnya seperti ini:

Aturan harus diikuti secara ketat, kecuali jika ada tantangan yang diajukan terhadap mereka - dalam hal ini aturan yang ditentang harus tetap diabaikan sampai ini diselesaikan - baik dengan menolak tantangan atau dengan menerimanya dan menyesuaikan aturan agar sesuai.

Anda mungkin menyukai hal di atas dengan lebih baik dan Anda mungkin berharap hal itu terjadi di mana-mana, untuk semua orang, tetapi lihat lebih dekat ke bagian "tantangan dimunculkan / tetap diabaikan / sesuaikan" dan tanyakan pada diri Anda bagaimana hal itu dapat diimplementasikan. Tanyakan pada diri sendiri berapa lama mungkin tergantung pada proyek dan tim. Jika butuh satu jam, apakah itu bisa diterima? Bagaimana jika dibutuhkan sehari, atau seminggu, atau ... sebulan?

Anda lihat, bahwa pendekatan tantangan-dan-abaikan-sampai-diselesaikan dapat membuka pintu lebar untuk penyalahgunaan jika itu disajikan sebagai panduan untuk proyek apa pun. "Ya, ya kami dengar, mari kita lakukan seperti yang dikatakan panduan ini. Pertama, isi formulir tantangan ini dan dapatkan persetujuan CEO / CFO / CTO; perkirakan ini akan memakan waktu satu atau dua minggu. Setelah itu, tunggu sampai kami memperbarui pemeriksaan kode kami ; itu mungkin memerlukan satu atau dua minggu lagi. Sementara itu, pastikan kode kritis kinerja Anda memformat pernyataan logging yang benar tentang setiap gerakan register. "

Saya tidak bisa membaca pikiran penulis panduan, tetapi masuk akal untuk berasumsi bahwa mereka ingin menghindari menggunakannya untuk membenarkan kekacauan seperti yang dijelaskan di atas. Dari perspektif ini, lebih aman untuk menyatakan dengan jelas bahwa panduan ini tidak mengambil tindakan penegakan hukum - dengan cara ini, betapapun canggungnya, masih memungkinkannya digunakan untuk berbagai tim dan proyek yang sewenang-wenang. Mungkin ada harapan bahwa tunjangan luas seperti itu membuat tim yang lebih matang dan efisien kesempatan untuk mempersempitnya secara wajar tanpa merusak produktivitas pengembang.


Diterapkan pada kasus spesifik Anda, menulis dokumen gaya pengkodean untuk tim Anda dan gagal tinjauan kode jika gaya tersebut tidak cocok - saya pikir Anda perlu mencari tahu berapa lama waktu yang dibutuhkan bagi pengembang untuk menantang aturan tertentu, biarkan diabaikan, diselesaikan, dan apakah itu berubah atau pulih tergantung pada resolusi.

Jika Anda mencari cara untuk membuat proses ini bekerja tanpa memasukkan banyak hambatan ke dalam alur kerja pengembangan Anda, maka pendekatan tantangan / resolusi yang diformalkan dan mudah memang patut dipertimbangkan daripada kekacauan "melanggar jika Anda menangis cukup keras".


Sebagai catatan, saya ingin membahas apa yang Anda tulis dalam komentar lain , "Asumsikan bahwa gaya pengkodean ideal, dan jika itu tidak terjadi, dll."

Ini asumsi yang berbahaya, sungguh. Saya mematahkan hidung saya (dua kali! Dalam satu proyek! Di mana saya memiliki pengalaman yang luas dan membayangkan bahwa saya tahu segalanya tentang hal itu, pikirkanlah) dan saya sangat menyarankan Anda untuk menjatuhkannya. Lebih aman untuk mengasumsikan bahwa pemandu gaya mungkin memiliki kesalahan dan berupaya memikirkan apa yang harus dilakukan jika kesalahan tersebut ditemukan.

agas
sumber
Mari kita begini: tim kami kecil, dan proses kami tidak menyertakan siapa pun di atas bos saya (yang hanya pemimpin tim). Jadi, game seperti yang Anda jelaskan di atas tidak akan terjadi.
BЈовић
@ BЈовић dalam hal itu pendekatan tantangan / resolusi terlihat sebagai pemenang yang jelas
agas
53

Mengizinkan orang mengabaikan gaya pengkodean karena preferensi pribadi adalah ide yang buruk.

Kutipan dalam pertanyaan Anda tampaknya memungkinkan pengembang mana saja untuk hanya mengatakan "Saya tidak akan menggunakan gaya ini karena saya tidak menyukainya."

Ini bertentangan dengan seluruh poin, yang membuat semua orang di tim melakukan hal-hal dengan cara yang sama untuk konsistensi dan keterbacaan.

Saya setuju bahwa dokumen gaya dengan pernyataan seperti itu mungkin tidak ada gunanya.

Namun demikian, beberapa fleksibilitas dalam mematuhi pedoman gaya disarankan:

  • Mengikuti pedoman secara kasar mungkin mencegah cara terbaik untuk menulis sepotong kode tertentu . Pengembang harus dapat mengabaikan pedoman, dan menyatakan bahwa apa yang telah mereka lakukan adalah cara terbaik dan paling mudah dibaca untuk mencapai sesuatu dalam kasus ini.
  • Bekerja dengan kode lama mungkin memerlukan fleksibilitas. Ini mungkin bukan penggunaan waktu Anda yang baik untuk menata ulang basis kode yang ada. Jika Anda menulis ulang bagian tertentu secara signifikan, Anda dapat memformatnya menjadi gaya yang disukai. Namun, jika Anda hanya melakukan perubahan kecil, mungkin lebih baik menggunakan gaya kode yang ada.
  • Mengecewakan tentang setiap pelanggaran kecil terhadap panduan gaya bukanlah penggunaan waktu yang baik. Tinjauan kode adalah saat yang tepat untuk menyorot kode apa pun yang secara signifikan tidak sesuai dengan gaya tim. Namun, menangkap dan memperbaiki "kesalahan" gaya kecil cenderung menjadi pekerjaan yang sibuk yang berfokus pada hal yang salah. Tentu, gagal tinjauan kode jika gaya itu diabaikan secara terang-terangan. Tapi saya tidak suka ide menjalankan analisa dan menunjukkan setiap tanda kurung atau lekukan yang salah, apalagi membuat seseorang gagal atas dasar ini.

Kesimpulannya: izinkan fleksibilitas dalam mematuhi pedoman gaya, untuk memenuhi kebutuhan tim Anda - tetapi tidak dengan alasan sewenang-wenang seperti preferensi pribadi.


sumber
4
Akan lebih baik untuk mengatakan bahwa jika ada alasan yang baik untuk melanggar peraturan, maka langgarlah. Tidak mungkin untuk membuat daftar semua alasan yang bagus, tetapi saya menyarankan bahwa preferensi pribadi belaka bukanlah satu. The panduan gaya Python memiliki bagian yang bijaksana pada saat Anda harus melanggar aturan.
Michael Hoffman
1
Pengecekan gaya nitpick otomatis bisa berguna: tetapi hanya jika dikombinasikan dengan tombol mudah untuk menerapkan semua perubahan yang disarankan, dan cara untuk mengatakan "tidak, saya melanggar aturan itu karena suatu alasan". Tergantung pada tingkat proses Anda, yang terakhir mungkin sesuatu yang perlu dibenarkan dalam review kode / dll.
Dan Neely
1
Ketaatan gaya kode sangat penting di perusahaan saya, kami memiliki PyLint menegakkan standar PEP8 pada kode kami sebagai bagian dari pipeline build kami. Komitmen yang mengurangi kesehatan kode ditolak secara otomatis.
sethmlarson
1
Periksa cukup aturan untuk mendapatkan hasil yang Anda butuhkan. Abaikan, perbarui atau hapuskan segala yang menyebabkan masalah. Terapkan akal sehat yang sesuai untuk menukar kebahagiaan dan produktivitas
Sean Houlihane
2
Selama bertahun-tahun saya sampai pada kesimpulan bahwa satu-satunya bagian yang sangat berguna dari panduan gaya adalah indentasi kode dengan benar. Anda bahkan tidak perlu semua indentasi dengan cara yang sama - cukup indentasi dengan benar. Panduan gaya yang saya tulis umumnya mengandung tidak lebih dari 3 aturan (biasanya hanya satu aturan - indentasi dengan benar sehingga tidak terlihat jelek). Jika saya datang ke toko dan melihat kode sudah terlihat OK, saya bahkan tidak menyarankan perlu gaya pengkodean.
slebetman
13

Gaya pengkodean, dan panduan gaya ada untuk membantu membuat kode lebih mudah dibaca. Dan keterbacaan ada untuk membantu dengan kompleksitas.

Oleh karena itu pada akhirnya apakah akan melanggar atau tidak (saya akan menyebutnya adaptasi) gaya pengkodean yang sesuai dengan kebutuhan organisasi Anda bergantung pada seberapa banyak hal itu membantu membuat hal-hal dapat dimengerti.

Ingat, semuanya, dan saya tekankan, SEGALA SESUATU, dari pemrograman OO ke paradigma fungsional, ke berbagai model konkurensi, ada karena satu-satunya alasan membantu orang menghadapi kompleksitas.

Orang bodoh mana pun dapat menulis kode yang dapat dimengerti komputer. Pemrogram yang baik menulis kode yang dapat dimengerti manusia. - Martin Fowler, 2008

treecoder
sumber
Jawaban Anda tidak jelas YA atau TIDAK. Jadi, apakah Anda mengatakan bahwa itu benar-benar opsional? Dengan istirahat - saya setuju.
BЈовић
3
Ya, itu opsional jika melanggar itu sangat membantu (pikirkan kode lawas). Tidak, itu tidak jika Anda hanya melakukannya karena Anda menyukainya dan itu tidak membawa manfaat yang masuk akal. Jadi yang saya katakan adalah tidak ada yang terjadi. Hancurkan apa pun atau tidak sama sekali untuk tujuan akhir mengurangi kompleksitas.
treecoder
3
@ BЈовић Apa yang dikatakan treecoder pada dasarnya adalah bahwa Anda memiliki fokus yang salah. Peraturan bukanlah sihir. Anda tidak akan secara ajaib membuat segalanya lebih baik dengan mematuhi serangkaian aturan secara kaku. Jadi, Anda harus berpikir, "Apa yang seharusnya dipenuhi oleh peraturan ini?" sebagai gantinya, dan Anda bekerja menuju bahwa tujuan sebagai gantinya. Aturan memberi tahu Anda apa yang seharusnya menjadi default Anda; jika mengikuti aturan berhasil melawan tujuan yang telah ditetapkan untuk dicapai, maka mereka tidak layak untuk diikuti dalam kasus itu .
jpmc26
6

Apakah gaya pengkodean dalam organisasi adalah hal opsional?

Organisasi memilih untuk memiliki gaya pengkodean - tidak ada persyaratan untuk memilikinya sejak awal.

Jadi kutipan yang Anda baca membahas masalah terbesar yang saya lihat mengenai pengkodean "gaya" dan "peretas" superstar sungguhan - Anda membawa orang baru di papan dan dia menulis kode yang akan menjatuhkan zombie dan membuat server lama Anda berteriak dengan cepat. .. tetapi gaya pengkodeannya berbeda dari "gaya organisasi Anda yang diterima." Dia menolak untuk berubah dan proses untuk membuat semua orang menyesuaikan diri dengan gayanya akan memakan waktu dan mahal. Sekarang apa?

Sebagian besar peretas super yang saya kenal datang dengan ego sama besarnya dengan keterampilan mereka, dan mereka ingin organisasi beradaptasi dengan mereka , bukan sebaliknya. Jadi, mungkin standar gaya pengkodean Anda harus lebih seperti pedoman gaya pengkodean sehingga Anda dapat membiarkan orang peretas pembunuh ini terus menulis kode yang sangat cepat dan menakjubkan dengan beberapa penyimpangan gaya, tetapi pastikan bahwa semua orang mengerti bahwa sampai mereka mencapai hacker epiknya. status, mereka harus mengikuti aturan (atau bahkan membantu membereskannya).

Tentu saja, ini adalah mimpi buruk manajemen, tetapi mengelola orang-orang teknologi secara umum agak seperti menggembalakan kucing. Jadi sebagian besar perusahaan memiliki "pedoman gaya" bukan "standar gaya." Dan build tidak gagal dan review kode tidak gagal secara otomatis karena pelanggaran gaya di semua perusahaan. Anda harus memutuskan masalah manajemen yang ingin Anda miliki - memungkinkan peretas superstar dan memiliki "pedoman" atau kehilangan superstar dan memiliki gaya kode yang lebih konsisten.

Jim
sumber
1
Re: "Sebagian besar peretas super yang saya tahu datang dengan ego sama besarnya dengan keterampilan mereka": Saya tidak berpikir itu benar. Mereka mungkin tampak memiliki ego yang besar karena mereka tidak secara otomatis tunduk pada pendapat orang lain, tetapi pendapat yang saya tahu semuanya sangat terbuka jika Anda dapat membuat kasus yang bagus untuk apa yang Anda lakukan. (Meskipun saya tidak yakin bahwa "ego" adalah kebalikan dari konformisme, bagaimanapun.)
ruakh
2
"Sebagian besar peretas super yang saya kenal datang dengan ego sama besarnya dengan keterampilan mereka, dan mereka ingin organisasi beradaptasi dengan mereka, bukan sebaliknya." Saya ragu ada pengembang yang begitu bagus sehingga akan melebihi biaya sikap seperti itu dan saya ragu insinyur seperti itu akan dipekerjakan dalam waktu yang lama.
Andy
1
"Dan build tidak gagal dan review kode jangan gagal secara otomatis karena pelanggaran gaya di semua perusahaan" Sebenarnya saya bekerja untuk perusahaan yang memang menempuh rute itu, dan hasilnya secara obyektif lebih baik daripada sebelum lemahnya penegakan hukum. standar.
Andy
3

Jadi, apakah saya salah memahami sesuatu dari dokumen ini dan kutipan di bagian atas pertanyaan ini? Bisakah orang benar-benar mengabaikan gaya pengkodean?

Tergantung.

Tempat saya saat ini tidak memiliki panduan gaya, dan itu bukan masalah besar. Ada beberapa variasi kecil antara pemrogram, tetapi tidak terlalu mempengaruhi pembacaan, dapat ditemukan, atau konsistensi dengan cara yang berarti. Dan kami memiliki grup yang cukup besar dan budaya yang cukup kuat untuk menegakkan bahwa setiap anggota baru dalam tim akan sejalan (atau lainnya).

Di perusahaan sebelumnya, kami berkembang pesat dan memiliki beberapa orang yang tidak terbiasa dengan bahasa dan idiom-idiomnya. Di perusahaan itu, masuknya orang berarti tidak ada budaya yang memaksakan penulisan yang baik. Dan orang-orang yang baru mengenal bahasa itu berarti ada banyak hal yang harus disesuaikan. Ada checker gaya otomatis adalah cara paling efisien untuk membuat penyesuaian, dan panduan tertulis yang sebenarnya adalah cara terbaik untuk melatih orang-orang baru dalam harapan kami.

Secara pribadi, saya tidak terlalu peduli dengan panduan gaya, dan bahkan tidak terlalu peduli untuk penerapan gaya otomatis. Jika orang tersebut bahkan tidak dapat mengambil idiom dasar, mengapa Anda mempekerjakan mereka sebagai programmer? Dan jika mereka adalah pemain tim yang buruk sehingga mereka akan terus menulis kode yang sulit bagi orang lain untuk bekerja, mengapa Anda mempekerjakan mereka sama sekali?

Telastyn
sumber
1
Hanya untuk menjawab bagian terakhir: itu adalah keputusan manajemen tinggi untuk melakukan outsourcing beberapa perpustakaan. Dan tim saya tidak memiliki pengaruh pada siapa yang bekerja di sana. Gaya pengkodean mereka sangat berbeda.
BЈовић
"Kami memiliki grup yang cukup besar dan budaya yang cukup kuat untuk menegakkan bahwa setiap anggota baru dalam tim akan sejalan" Kedengarannya seperti Anda memiliki setidaknya beberapa pedoman gaya, mereka hanya tidak ditulis?
@ dan1111 - yakin? Maksud saya mereka mungkin bermuara pada "jangan kencing rekan tim Anda", tetapi pertanyaan yang diajukan secara spesifik tentang dokumen dan penerbitan.
Telastyn
2

Ini lebih merupakan taktik psikologis daripada interpretasi literal tentang cara terbaik untuk mengelola gaya pengkodean. Itu membuat tim / perusahaan / manajer / pemimpin kurang otoriter. Saya akan lebih fokus pada pengecualian situasional daripada pribadi. Terlepas dari dokumen pengkodean, tujuannya adalah untuk membuat hal-hal mudah dibaca. Kode yang membingungkan harus diatasi dan diubah jika dianggap perlu. Ada banyak alat untuk merawat hal-hal kecil yang membosankan, jadi gunakanlah.

Ada pengecualian untuk setiap aturan. Beri orang "beberapa" ruang gerak. Semakin sedikit orang yang terlibat dalam menerima aturan gaya pengkodean (Welcome new guy.), Semakin mereka cenderung ingin membalas. Banyak hal hitam dan putih, tetapi beberapa terbuka untuk interpretasi.

Tujuannya adalah untuk melibatkan semua orang dalam semangat pedoman pengkodean alih-alih memperebutkan setiap detail dan interpretasi kecil.

Ya, akan tiba saatnya dokumen gaya pengkodean tidak masuk akal untuk digunakan dan pengembang profesional dan dewasa harus mengetahui perbedaannya.

JeffO
sumber
Jadi, saran Anda adalah untuk menyebarkan pekerjaan di jenkins, yang akan memformat ulang file begitu seseorang memeriksa sesuatu? BTW "ruang gerak" adalah saya kira sesuatu yang mirip seperti dalam jawaban ini .
BЈовић
Jika itu menyelesaikan pekerjaan dan mencegah diskusi selama satu jam tentang sesuatu yang dapat diperbaiki tanpa usaha apa pun, mengapa tidak. Jawabannya serupa, tetapi saya pikir itu lebih berkaitan dengan moral dan pola pikir tim. Anda dapat memiliki anarki tanpa standar pengkodean semudah memiliki terlalu banyak.
JeffO
2

Berdasarkan hasil edit Anda, Anda membidik tujuan yang tepat.

Ada banyak manfaat menggunakan panduan gaya, tetapi dua yang paling penting menurut saya, adalah keterbacaan kode antara anggota tim, dan kurangnya komitmen "konyol" (seperti ruang putih saja, atau garis tambahan dan sejenisnya).

Untuk mencapai tujuan Anda, panduan gaya yang Anda pilih (atau buat) harus sederhana dan mudah dipatuhi. Cobalah untuk benar-benar fokus pada apa yang Anda butuhkan. Tidak ada yang suka harus kembali dan menulis ulang potongan kode yang besar hanya untuk membuat orang senang. Tapi masih ada manfaatnya.

Pastikan anggota tim Anda menyetujui panduan gaya. Anda akan menahan mereka untuk itu, pastikan mereka setuju atau itu akan menjadi perjuangan abadi.

Pastikan pelanggaran gaya adalah "peringatan" dan bukan "gagal", biarkan manusia memutuskan apakah pelanggaran itu gagal. Alasannya sederhana. Saya percaya pada alur kerja yang sederhana. Jika suatu tempat dalam fase "pengujian" "gagal" terjadi maka Anda tidak dapat mendorong produksi. Yang saya gunakan adalah sebagai pengaman. Bahkan perbaikan panas harus melalui fase pengujian (meskipun lebih pendek). Dapatkah Anda benar-benar mengatakan bahwa Anda tidak akan mendorong perbaikan bug penting ke produksi karena seseorang menggunakan "bukannya a? Bagaimana dengan menggunakan for for, bukan masing-masing? Bagaimana jika for for memiliki beberapa perbaikan atas masing-masing? adalah keputusan yang tidak dapat dibuat oleh mesin (linter), jadi pastikan untuk memiliki manusia, menilai peringatan, dan bukan mesin yang gagal.

Untuk mengabaikan panduan Gaya, Anda harus menilai itu berdasarkan kasus per kasus. Pastikan bahwa "penyimpangan" memiliki alasan yang nyata. Mereka akan muncul. Tugas pengulas adalah memastikan bahwa ada alasan bagus untuk penyimpangan dan bukan alasan sepele.

kapas
sumber
0

Saya pikir musik suasana di sini adalah bahwa jika kebijaksanaan yang diterima adalah bahwa standar pengkodean tidak benar atau tidak lengkap, maka itu adalah yang lebih rendah dari dua kejahatan untuk menekan jika pengembang berada dalam perjanjian umum daripada harus melalui proses yang sulit untuk mendapatkan dokumen diubah dan ditinjau ulang.

Juga harus dicatat bahwa kebijakan penegakan standar kode di masa lampau biasanya bukan cara yang dilakukan sekarang.

Di masa lalu, Anda hanya akan goyang memegang buku tebal di ujung meja pengembang dan mengutip bab dan ayat mengapa kode nya melanggar bagian 34.5.5767.

Kami sekarang memiliki analisis kode statis dan alat dokumentasi otomatis yang menghilangkan banyak standar kode.

Gagal semua ini, Anda masih dapat membuangnya kembali ke pengembang, meningkatkannya dalam tinjauan kode atau hanya mengubahnya sendiri jika Anda memang ingin.

Robbie Dee
sumber
Asumsikan bahwa gaya pengkodean itu ideal, dan jika bukan itu masalahnya - maka orang dapat mengubahnya. Apakah orang-orang dalam kasus ini diperbolehkan untuk mengabaikannya?
BЈовић
Sulit dikatakan - terutama jika tidak ada konsensus keseluruhan. Saya kira senioritas pengembang dan / atau mediasi akan ikut berperan di sini ...
Robbie Dee
0

Pertanyaan Anda berpusat pada rekonsiliasi dua kutipan. Saya pikir apa yang ditulis treecoder menjawab pertanyaan Anda secara umum. Ini mewakili prinsip panduan Anda dalam menulis pedoman gaya.

Lebih khusus lagi, karena Anda bertanggung jawab untuk menetapkan pedoman gaya pengkodean (ini adalah asumsi saya karena Anda adalah penulis dokumen), Anda harus memutuskan apa yang opsional atau tidak, dan sejauh mana Anda akan memungkinkan fleksibilitas dalam gaya pribadi Anda tim. Anda akan mendapatkan umpan balik jika diperlukan. Tetapi begitu pedoman sudah ada, patuhi itu.

Jadi, Anda dapat merekonsiliasi dua kontradiksi yang tampak seperti ini:

Pikirkan kutipan pertama yang ditujukan kepada Anda sebagai pembuat keputusan gaya, sebelum dokumen pedoman selesai. Jika standar gaya tertentu tidak berfungsi untuk tim Anda, maka ini dianggap sebagai "keberatan pribadi yang kuat", dan pedoman Anda akan mencerminkannya.

Pikirkan kutipan kedua yang ditujukan kepada tim Anda, setelah dokumen selesai. Setelah Anda menetapkan pedoman untuk tim, dan dokumen tersebut ditulis, maka penting bagi semua pengembang di tim Anda untuk mematuhi pedoman gaya.

Harga Jones
sumber
0

Tidak masalah apa pun gaya pengkodean yang dimiliki orang, selama mereka memiliki gaya pengkodean. Jika sebuah perusahaan bersikeras pada gaya pengkodean, mereka banyak menginjak sekitar 49% pengembang mereka.

Masalahnya adalah bahwa sejumlah besar pengembang tidak keberatan banyak menyesuaikan gaya pengkodean mereka dengan standar lazim dalam suatu perusahaan, tetapi mereka sangat keberatan diberitahu oleh mereka yang lebih baik dalam (atau hanya peduli tentang) politik perusahaan.

Itu berarti menciptakan standar gaya pengkodean bisa menjadi pemborosan waktu, sumber argumen tanpa akhir, penyebab kebencian yang tak terbatas, dan secara keseluruhan menghabiskan banyak waktu dan energi.

gnasher729
sumber
0

Saya telah bergulat dengan pedoman gaya kode selama bertahun-tahun, seperti banyak orang lain miliki di forum ini. Ini termasuk panduan gaya bertarung yang menurut saya tidak disukai, dan mencoba mendorong orang lain untuk menggunakan panduan gaya untuk mengendalikan gaya mereka sehingga bisa lebih mudah dibaca secara keseluruhan.

Korporasi mendapat manfaat dari standar pengkodean yang umum. Ada banyak hal penting yang perlu dipertimbangkan ketika mengembangkan perangkat lunak untuk sebuah perusahaan, seperti bagaimana kita akan melatih pengembang baru untuk mengambil kode generasi sebelumnya. Saat Anda menulis kode, Anda tidak selalu memikirkan hal ini. Bahkan, banyak coders memilih untuk tidak mempertimbangkan bagaimana orang lain mungkin ingin mendekati kode 5 atau 10 tahun setelah mereka pergi. Panduan gaya pengkodean adalah cara bagi perusahaan untuk memberikan fokus untuk sasaran 5 dan 10 tahun ini, sehingga memudahkan pengembang untuk bekerja dalam skema yang lebih besar.

Di sisi lain, panduan gaya pengkodean terkenal tidak sempurna, karena tidak mungkin untuk mengembangkan gaya pengkodean yang sempurna dan menuliskannya. Anda benar-benar mulai berlari ke dalam kasus sudut lucu di mana bukti matematika mulai gagal jika Anda mencoba untuk membuatnya sempurna. Jadi kita tahu panduan gaya pengkodean tidak sempurna. Mereka mungkin tidak sepenuhnya fokus pada apa yang kita butuhkan 5 hingga 10 tahun ke depan.

Jika kita "memaksakan" gaya pengkodean, kita akan mengorbankan nilai sekarang untuk nilai nanti. Ini akan disebut "investasi" jika kita dapat yakin bahwa kita akan mendapatkan pengembalian atas upaya kita, tetapi setiap pengembang yang telah bekerja dengan panduan gaya pengkodean yang ditulis dengan buruk dapat membuktikan bahwa keuntungan "keterbacaan" tersebut dibayar mahal oleh pengembang yang mengganggu. jauh dari kode mereka. Dalam pengalaman saya, hanya ada sejumlah kecil kasus di mana gaya pengkodean memiliki manfaat, biasanya pada perangkat lunak untuk pelanggan glasial unik di mana perangkat lunak dapat digunakan selama 30 atau 40 tahun!

Sebagai gantinya, saya merasa paling efektif untuk memperlakukan panduan gaya pengkodean sebagai manifesto: "Inilah yang kami percaya gaya pengkodean terbaik untuk grup kami." Itu adalah kumpulan pemikiran yang mengalir yang didokumentasikan dengan kata-kata. Kata "percaya" penting: jika kepercayaan berubah, panduan gaya pengkodean harus berubah dengannya.

Di sinilah kutipan "keberatan pribadi yang kuat" Anda masuk. Dalam apa yang saya sebut dunia "sempurna", Anda menulis kode apa pun yang Anda rasa terbaik, dan Anda hidup dengan konsekuensinya. Kita sering suka mengabaikan konsekuensi "lunak" ketika kita pemrograman, tetapi dalam hal ini penting. Saya tidak memiliki masalah dengan Anda menulis dengan gaya Anda sendiri, jika Anda tidak keberatan saya tidak pernah memberi Anda sesuatu yang penting dan tahan lama untuk dikembangkan.

Pikirkan seluruh sistem seperti lapangan golf. Gaya pengkodean membuka jalan mudah ke fairway. Jika Anda berpegang teguh pada standar pengkodean, kami akan memastikan hidup semudah yang kami bisa. Semakin jauh Anda turun ke kasar, dengan menggunakan standar pengkodean Anda sendiri, semakin Anda harus membuktikan nilai Anda di tim.

Jika saya datang pada hari Senin pagi, untuk mengetahui bahwa Anda menghabiskan seluruh akhir pekan untuk menyelesaikan masalah yang telah kami resah selama setahun, dan Anda melakukannya dengan standar pengkodean "khusus" Anda sendiri, saya tidak akan memberitahu Anda untuk memperbaikinya. Aku akan memberitahumu untuk mandi. Jika standar pengkodean "khusus" Anda luar biasa "istimewa," Saya bahkan mungkin menyarankan pengembang tingkat "meninjau" kode untuk menyebarkan pengetahuan tentang bagaimana kode Anda bekerja dan secara tidak langsung menyebutkan bahwa jika ada sesuatu yang tampak sulit dibaca, ia harus membereskannya. Anda memberikan nilai yang cukup kepada perusahaan pada akhir pekan itu, bahkan layak untuk tidak menyebutkan pelanggaran standar pengkodean mengerikan yang Anda lakukan.

Tentu saja, ada batas di dalam metafora golf ini. Jika saya meminta Anda untuk melakukan tugas pangkat dan file, mungkin menambahkan bidang baru ke beberapa formulir, dan Anda memutuskan untuk menggunakan kesempatan untuk memperbaiki seluruh kode pengisian formulir yang sesuai dengan gaya khusus Anda, menggunakan sekelompok karakter teduh seperti mendefinisikan makro dan beberapa teknik pemrograman meta templat yang mengerikan yang baru Anda pelajari dari pertukaran stack, Anda akan diminta untuk kembali dan memperbaikinya. Anda memilih untuk bertindak, itulah konsekuensinya.

( Penafian: Saya benar-benar telah menulis implementasi iniis_base_of untuk menyelesaikan tugas kasar, dan mendapatkan setiap neraka yang saya dapatkan dari pengembang senior. Saya katakan itu sepadan. Saya masih mendapatkan gelembung tawa yang luar biasa setiap kali saya lihat bagaimana wedges pola seperti 7 bagian yang tidak berhubungan dari spesifikasi C ++ bersama-sama untuk melakukan sesuatu yang luar biasa. Ambil itu, Anda pengembang senior! Itulah yang Anda dapatkan karena melarang boostproyek khusus ini! )

Cort Ammon - Pulihkan Monica
sumber
-1

Best tampaknya menggunakan pemformat kode otomatis yang merupakan fitur bawaan dari hampir semua IDE turunan dan harus ada untuk hampir semua bahasa pemrograman yang tersebar luas. Ini dengan tenang menghilangkan banyak pekerjaan yang tidak perlu dan banyak gesekan selama ulasan kode.

Sangat masuk akal untuk meminta dari semua pengembang untuk mengembangkan kebiasaan untuk menerapkan formatter ke bagian kode yang baru dibuat.

Yang terburuk yang dapat Anda lakukan adalah meminta beberapa gaya pengkodean khusus yang tidak didukung oleh formatter kode.

Dalam kasus yang relatif jarang terjadi, beberapa bagian mungkin diformat secara berbeda, jika formatter melakukan ini dengan sangat buruk, tetapi biasanya lebih baik untuk menyesuaikan formatter agar semua format lebih baik.

Mungkin ada beberapa aturan yang berguna yang tidak dapat didukung oleh formatter (misalnya, bagaimana memberi nama variabel) tetapi jika ini masih ada, maka relatif mudah untuk diikuti.

h22
sumber
sayangnya ini tidak menjawab pertanyaan secara langsung . +1 lagian, untuk saran yang baik, dan solusi praktis untuk bolak-balik tentang gaya yang tidak berguna. mengkonfigurasi formatter, dan selesai dengan itu.
Bruno Schäpper
Saya masih berpikir memiliki formatter adalah solusi terbaik untuk masalah gaya pengkodean, karena keduanya memberikan gaya yang konsisten dan menghilangkan kemungkinan untuk mob tanpa perlu semua pengembang baru untuk tempat yang salah tempat dan garis berakhir. Saya telah melihat ini bekerja dengan sangat baik dalam situasi nyata, inilah mengapa saya merekomendasikan solusi ini dan tidak akan menghapus pertanyaan.
h22
-1

Solusi Aktual (bukan hanya filsafat)

Izinkan komentar kode untuk mengabaikan linting, dan kompilasi daftar komentar tersebut jika Anda suka (seperti yang sering dilakukan dengan komentar yang berlebihan)

Berikan pengembang Anda kemampuan untuk bekerja di luar konvensi secara eksplisit dan dengan alasan - dan selama ulasan kode oleh manusia itu dapat diteliti sesuai kebutuhan.

Adam Tolley
sumber