Saya benci salah satu standar pengkodean kami dan itu membuat saya gila, bagaimana memprosesnya? [Tutup]

18

Penafian : Tidak berlebihan seperti judulnya, tapi itu masih membuat saya tidak nyaman. Saya hanya akan mengekspresikannya dengan jujur, jadi ambillah dengan sebutir garam. Hanya berpura-pura bahwa saya sedang berbicara tentang yang standar pengkodean yang Anda tidak suka bekerja dengan.

Sunting : Fakta bahwa saya tidak menyukainya, tidak berarti saya tidak menggunakannya atau menegakkannya.


Saya memutuskan untuk mengajukan pertanyaan ini dengan semangat bagaimana cara melampaui standar yang tidak Anda sukai, untuk tidak mendapatkan bantuan tentang bagaimana cara berdebat yang lebih baik bagaimana hal itu dapat diubah (walaupun ada komentar mengenai bagian terakhir ini dihargai). Selain itu, saya bekerja di perusahaan besar dan perubahan sesuatu yang telah berlangsung begitu lama dan yang sangat kecil tidak mungkin.

Standar tersebut adalah standar pembuka-keriting-kurawal-on-jalur-khusus:

somefunction()
{
    //...
}

Alih-alih * jelas superior * (perhatikan nada bercanda / frustrasi):

somefunction() {
    //...
}

Argumen pribadi saya yang menentang standar:

  • Ini menggembungkan kode : baris tambahan yang tidak perlu
  • Sulit diketik : walaupun mungkin ini hanya saya yang berjuang dengan standar, saya tahu satu keystroke tambahan tidak terlalu buruk.
  • Tidak mudah dibaca : Saya mulai membaca deklarasi fungsi, jika pernyataan, atau pernyataan susunan ruang lingkup lainnya dan saya sudah tidak perlu mencari penjepit pembuka. Blok bersarang dengan standar ini hanya membuat saya marah karena suatu alasan.
  • Digunakan oleh orang-orang yang berasal dari latar belakang Microsoft IDE : Saya pikir harus ada alasan yang diperdebatkan (atau lebih) di belakang standar, tidak hanya menerimanya dengan paradigma.

Argumen mereka (dan cara saya membalas secara internal kepada mereka):

  • Lebih mudah dibaca karena Anda dapat melihat di mana blok mulai dan berakhir segera : Saya tidak dapat memahami ini, apa gunanya blok jika Anda tidak tahu apa yang dimilikinya, jadi Anda harus membaca ke belakang.
  • Saya menggunakannya dalam Microsoft IDE dan saya menyukainya : Uhh ... ok?
  • Ada dalam standar : * ngeri *

Apakah saya satu-satunya yang berjuang dengan pendirian yang tegas terhadap standar tertentu ?, bagaimana Anda bisa mengatasinya ?, apa pendapat Anda tentang standar apa yang seharusnya (hanya untuk bersenang-senang)?

dukeofgaming
sumber
6
untuk berapa lama Anda menggunakan standar yang Anda "benci"? dan apakah Anda menggunakan standar lain "secara paralel"? Maksudku, mungkinkah itu hanya masalah membiasakan diri dengannya? Harus mengakui saya dulu benci standar yang sama, tetapi setelah sekitar satu tahun menulis secara eksklusif bahwa kebencian ini telah hilang sepenuhnya
nyamuk
54
Anda menghilangkan spasi kosong yang dibutuhkan antara akhir deklarasi fungsi dan braket keriting! Kamu harus membakar!
pap
5
Jalani saja. Itu masalah yang sangat, sangat kecil. Berbahagialah bahwa satu-satunya hal yang mengganggu Anda. Jika Anda mengubah bahasa Anda juga harus dapat menyesuaikan dengan gaya baru. Jadi bekerja selama beberapa minggu dengan itu harus memperbaiki perasaan ini bahwa itu "salah".
schlingel
8
Used by people who come from a Microsoft IDE backgroundIni bukan hal Microsoft, misalnya Kernel Linux dan K&R menggunakan gaya yang sama.
Lucas
5
Jika Anda menghabiskan semua energi Anda untuk mengamuk tentang hal-hal sepele, Anda tidak akan memiliki sisa untuk hal-hal yang sebenarnya penting.
Blrfl

Jawaban:

47

Jika Anda ingin melupakan ini - ada kutipan dari Torvalds:

Pemrogram yang buruk khawatir tentang kode. Pemrogram yang baik khawatir tentang struktur data dan hubungan mereka.

Sekarang pertimbangkan, di mana itu menempatkan programmer yang khawatir tentang hal sepele seperti gaya menguatkan ditegakkan oleh standar kode mereka? Apakah basis kode Anda sebaliknya begitu murni bahwa menguatkan adalah satu-satunya masalah yang layak untuk diperdebatkan?

scrwtp
sumber
2
Saya setuju sepenuhnya. Jika Anda telah menyelesaikan semua masalah lain dan memutuskan di mana menempatkan ikal adalah hal terpenting yang tersisa, Anda melakukan lebih baik daripada setiap proyek perangkat lunak lain di luar sana.
4
Apakah basis kode Anda sebaliknya begitu murni bahwa menguatkan adalah satu-satunya masalah yang layak untuk diperdebatkan? - Ini akan menjadi pertanyaan retoris - basis kode seperti itu tidak pernah ada dalam sejarah!
MattDavey
12
Saya ingin menambahkan bahwa Linus menjadi gila jika Anda memformat git melakukan pesan "salah" wired.com/wiredenterprise/2012/05/torvalds_github
Giles Roberts
Itu karena dia mengomentari fakta bahwa Anda akan masuk ke sebuah proyek, Anda menghormati panduan gaya proyek dan mengirimkan proposal untuk mengubahnya ... jika tidak tetap berpegang pada gaya mereka!
Rudolf Olah
1
@GilesRoberts: Linus menjadi gila jika Anda memformat git melakukan pesan "salah", karena itu tidak bekerja dengan proses peninjauan yang ditetapkan. Satu yang bekerja dengan baik untuk proyek selama 20 tahun dan melibatkan ratusan orang. Beberapa aturan proses jauh lebih penting daripada yang memformat kode.
Jan Hudec
66

Beberapa orang menyukainya dengan cara Anda dan yang lain tidak. Bagaimanapun seseorang akan merasa terganggu. Sekarang giliran Anda kali ini. Mengisapnya dan melanjutkan pekerjaan.

Cromulen
sumber
5
Saya pikir dia bertanya bagaimana dia bisa mengatasinya. Yang sebenarnya merupakan pertanyaan yang sangat berbeda.
Zachary Yates
18
Tidak mengikuti standar menciptakan masalah yang lebih buruk, dan mengganggu semua orang . "Mengisapnya" memang!
Frank Shearar
2
Saya setuju. Anda hanya harus menghadapinya.
Cody
3
Jujur, itu akan membuat saya frustasi juga, tetapi "menyedotnya" adalah jawaban yang tepat, sayangnya.
Sulthan
27

Apakah standar tim didokumentasikan? Jika ya, apakah ada alasan dalam panduan gaya? Jujur, saya harus menyedotnya satu ton kali dan menyelesaikan pekerjaan nyata. Ada masalah yang lebih buruk untuk dimiliki, tapi saya rasa Anda - itu masih peringkat (saya setuju dengan Anda pada gaya, omong-omong).

Apa yang membantu saya melewatinya:

  1. Menyadari bahwa ada manfaat nyata untuk gaya tunggal (tidak peduli apa itu). Atau setidaknya sekelompok orang berpikir demikian .
  2. Apa yang baru saja Anda lakukan, tuliskan mengapa itu terasa salah, sehingga Anda dapat mengajukan argumen dengan baik di masa depan.
  3. Gunakan alat penata gaya demi tuhan , itu akan menyelamatkan kewarasan Anda. Resharper , CodeMaid , StyleCop , JSLint , CheckStyle , dll ... bahkan Visual Studio akan melakukannya untuk Anda .
  4. Kick ass pada proyek ini dan bersiaplah untuk yang berikutnya ketika Anda dapat menetapkan standar.
Zachary Yates
sumber
7
+1 untuk (3), poin bonus jika Anda mengaturnya sebagai pengait pasca-tarik / pra-dorong untuk SCM Anda.
Martin Green
1
Alat styling membuat masalah ini hilang dan membuat orang menaruh uang mereka di tempat mulut mereka. Jika Anda benar-benar terlihat menggunakan penahan keriting dengan cara tertentu, maka Anda mengubah konfigurasi penataan agar semuanya hangat dan nyaman untuk Anda sendiri. Jika tidak, tutup mulut Anda bisa mendapatkan kode.
Calphool
16

Keunggulan dari satu konvensi di atas yang lain adalah * jelas sewenang-wenang * .

Masalah keterbacaan yang Anda hadapi, atau rekan satu tim Anda akan hadapi dengan standar Anda, hanyalah hambatan psikologis untuk berubah.

Argumen keterbacaan obyektif mendukung * konsistensi * di seluruh basis kode.

mouviciel
sumber
"hanya" resistensi psikologis untuk berubah? Resistensi psikologis untuk berubah bisa sangat besar.
Giles Roberts
8

Pikirkan kembali ke masa ketika Anda yakin bahwa Anda benar tentang sesuatu dan selama periode waktu menyadari bahwa Anda salah, atau setidaknya Anda bereaksi berlebihan bertahun-tahun yang lalu. Pertimbangkan kemungkinan bahwa Anda mungkin salah lagi, dan berikan standar pengkodean baru atau waktu proses untuk meyakinkan Anda.

Standar saya sendiri mengamuk ketika saya masih baru dalam pengkodean (katakanlah lima tahun dalam karier saya) adalah apakah pengidentifikasi multi-kata harus WrittenLikeThisatau tidak written_like_this. Saya bahkan tidak akan mengatakan yang mana yang saya sukai, tetapi intinya adalah bahwa setelah beberapa waktu saya berganti sisi dan setelah beberapa waktu lagi saya tidak peduli.

Kyle Jones
sumber
Ya, saya terpecah antara like_this dan likeThis juga. Saya condong ke gaya huruf kecil akhir-akhir ini, lebih jelas untuk dibaca.
doug65536
1
Tentu saja, sekarang saya terjebak dengan likeThis dalam beberapa proyek. Oh well, konvensi penamaan tidak terlalu penting dalam skema besar hal.
doug65536
1
Persis. Tidak masalah sedikitpun pada garis mana tanda kurung buka. Tidak masalah sedikitpun apakah Anda menulis MultiWordIdentifiers atau multi_word_identifiers. Apa pun standar yang digunakan perusahaan Anda, ikuti saja, dan dalam beberapa bulan Anda akan kesulitan mengingat Anda pernah ingin melakukannya dengan cara lain.
Carson63000
8

Perbedaan standar yang Anda gambarkan dengan kurung kurawal sebagian besar bersifat arbitrer. Kedua cara itu sama-sama cara yang baik dan bagi perusahaan, selama semua orang melakukannya sama, itu semua baik.

"Jelas superior" yang Anda bicarakan adalah jenis superior yang dibicarakan orang ketika mereka membicarakan hal-hal "mereka terbiasa".

Anda akan terbiasa dengan itu segera dan dalam satu tahun atau lebih, cara lain akan "jelas lebih unggul".

Singkatnya: atasi saja.

Pieter B
sumber
jawaban yang jelas superior
Mawg mengatakan mengembalikan Monica
5

Subjek khusus ini merupakan Perang Agama antara mereka yang lebih suka satu gaya daripada yang lain. Sangat sedikit orang yang ambivalen ...

Pada akhirnya, tidak ada yang benar dan tidak ada yang salah.

Panduan gaya dan standar pengkodean ada karena sejumlah alasan - dan satu aspek utama adalah untuk memastikan keseragaman tata letak, yang bertujuan untuk mengurangi jumlah kesalahan yang jelas, dan meningkatkan pemeliharaan.

Apakah saya satu-satunya yang berjuang dengan pendirian yang tegas terhadap standar tertentu?

Jawaban singkatnya adalah "Tidak" Anda bukan satu-satunya. Tetapi ada hal-hal yang lebih penting untuk dikhawatirkan. Bahkan dalam standar yang seseorang masukan, akan selalu ada kompromi - saksikan beberapa aspek yang membuatnya menjadi C99 dan C12 yang tidak masuk akal bagi saya.

Bahkan MISRA-C (yang memiliki pengaruh langsung terhadap saya) berisi hal-hal yang secara pribadi tidak saya setujui - tetapi saya bisa mengerti mengapa orang lain merasakan pembenaran untuk itu.

bagaimana Anda bisa mengatasi ini?

Dan di situlah letak jawabannya - daripada berfokus pada mengapa Anda tidak suka secara pribadi, coba dan pahami mengapa orang / orang yang menyetujuinya melakukannya.

Aturan biasanya diperkenalkan (di pintu kandang tertutup setelah kuda telah melesat semacam cara) untuk mengatasi masalah sebelumnya. Dan jika aturannya masih tidak masuk akal, bicaralah dengan pemilik standar dan cobalah dan "mendidik" mereka.

Andrew
sumber
4

Saya pikir Anda hanya perlu melanjutkan. Saya akan mencoba menjawab catatan Anda dengan pendapat saya sendiri:

  • Kode bloat

    Satu baris kode tambahan sama sekali bukan kode kembung, kecuali jika Anda menulis 100-an metode dalam satu kelas, itu akan menambah ratusan baris tambahan. Kemudian lagi jika Anda memiliki ratusan metode dalam satu kelas, Anda memiliki masalah lain sama sekali.

  • Sulit Diketik

    Saya tidak bisa tidak setuju dengan Anda lagi tentang ini, Anda harus menekan tombol kembali untuk sampai ke baris berikutnya. Bagaimana dengan itu lebih sulit untuk mengetik?

  • Sulit dibaca

    Saya merasa setiap baris dalam satu kode harus memiliki fungsi tertentu. Setelah ini, Anda perlu mendefinisikan nama metode dalam satu baris, kemudian buka dan tutup kurung pada baris mereka sendiri.

  • Digunakan oleh orang-orang yang berasal dari latar belakang MS IDE

    Uhh ..... oke?

Singkatnya sepertinya Anda tertarik untuk menjadi pengembang .Net sebagai lawan dari jenis pengembang lainnya seolah-olah lebih rendah karena mereka menggunakan IDE yang default untuk standar ini.

stuartmclark
sumber
1
-1 Saya setuju pada semua poin, tapi saya tidak berpikir ada pendapat tentang masing-masing poin sangat membantu.
Caleb
4

Apakah saya satu-satunya yang berjuang dengan pendirian yang tegas terhadap standar tertentu?

Tentu saja tidak. Rapat untuk menentukan standar pengkodean itu mengerikan! Mereka berlarut-larut selama berjam-jam dan peserta secara pribadi diinvestasikan untuk mendapatkan favorit mereka sendiri (dan selalu salah, kecuali milik saya) idiosyncrasies diabadikan dalam standar. Pada akhirnya, tidak ada yang senang dengan hasilnya. Jika ada yang bisa lebih buruk daripada pertemuan standar pengkodean, itu adalah pertemuan tinjauan kode formal dalam beberapa bulan yang mengikuti penentuan standar: beberapa orang mencoba untuk mengadopsi standar, sementara yang lain (dengan sengaja atau tidak) mengabaikannya, dan Anda mendapatkan jam umpan balik seperti: Pada baris 132, 142, 145, 181, 195, dan 221 dari SillyFileConverter.cpp Anda meletakkan brace pembuka pada baris yang sama ketika standar pengkodean dengan jelas mengatakan bahwa itu harus di baris berikut !

bagaimana Anda bisa mengatasi ini?

Dengan caranya sendiri, pertemuan itu membantu. Sekalipun Anda bersimpati sepenuhnya pada pria yang meninggalkan brace pembuka pada baris yang sama dengan kondisional, atau apa pun, Anda tetap akan jengkel padanya karena membuang-buang waktu dengan tidak hanya menghisapnya dan mengikuti standar bodoh. Jika laki-laki itu adalah orang sok dan melakukan hal yang sama berulang-ulang, itu menjadi lebih menyebalkan. Menjadi jengkel pada perilaku itu membuatnya jauh lebih mudah untuk membenarkan menulis dengan gaya yang sedikit berbeda dari apa yang Anda inginkan - Anda tentu saja tidak ingin menjadi pria itu .

Bahkan jika Anda tidak mengalami tinjauan kode formal yang tak berkesudahan, Anda dapat mencoba meninjau kode Anda sendiri secara khusus untuk kepatuhan dengan standar. Tidak masalah apa yang Anda pikirkan tentang standar, Anda hanya membandingkan apa yang Anda tulis dengan apa yang dikatakan standar. Jika Anda menyalahkan diri sendiri setiap kali Anda gagal untuk mematuhi, itu mungkin memberikan beberapa umpan balik negatif yang Anda butuhkan untuk membantu Anda mengadopsi standar.

Caleb
sumber
"Terlibatlah dalam upaya standardisasi bahasa ... Dapatkan akal yang baik untuk keluar dari upaya standardisasi bahasa secepat mungkin" - norvig.com/21-days.html
Beni Cherniavsky-Paskin
3

Dengan hal semacam ini saya ingat Gulliver di Lilliput. Para Lilliputian telah berperang untuk mengakhiri telur rebus. (The big endian asli, pertarungan endian kecil).

Ambillah sebagai kesempatan untuk menertawakan diri sendiri, mereka tidak cukup sering datang dalam bisnis.

Jaydee
sumber
2

Contoh khusus Anda tidak menguntungkan karena merupakan contoh yang disetujui oleh sebagian orang dan sebagian tidak. Saya tidak setuju dengan argumen Anda, misalnya, dan saya yakin begitu banyak orang lain, sama seperti saya yakin banyak orang lain akan setuju dengan mereka. Hampir membuat saya berpikir pertanyaan itu harus ditutup karena sangat subyektif.

Namun pertanyaan tentang cara menangani standar yang tidak Anda setujui mungkin lebih dapat dijawab. Saya pikir jawabannya adalah bahwa di mana pedoman gaya ada dan disepakati dan telah digunakan maka jawabannya hanya untuk menyeringai, menanggungnya dan hanya menghadapinya. Pertimbangkan bahwa memiliki konsistensi lebih penting. Jika pedoman ini tidak akurat atau salah, mungkin ada argumen untuk perubahan, tetapi ini bergaya sehingga tidak ada argumen yang benar-benar terpisah dari preferensi pribadi.

Saya berasal dari latar belakang Java awalnya jadi mengikuti standar yang Anda sebutkan. Saya kemudian pindah ke lebih banyak C ++ dan C # di mana gaya yang Anda benci digunakan. Tetapi tidak ada jawaban benar atau salah. Yang lebih penting adalah memiliki standar yang diikuti oleh semua orang. Jika standar pengkodean seperti ini dan tidak jelas salah maka mencoba untuk berdebat hanya akan menyebabkan gesekan dalam tim.

Naga api
sumber
1
Seperti yang dinyatakan dalam pertanyaan, pertanyaannya sebenarnya bukan tentang standar spesifik, jadi paragraf pertama Anda tidak cocok.
Caleb
2

Formatter + check in hook adalah awal yang baik. Tapi itu tidak cukup, karena apa yang Anda tulis tidak sepenting apa yang Anda lihat sepanjang hari. Dalam beberapa situasi, pendekatan mode Kacamata Emacs ' - menyimpan file dalam gaya mereka tetapi menampilkan lebih dekat dengan gaya Anda - menarik.

Pengalaman saya dengannya - menghadapi persis masalah yang ditulisnya, CamelCapsvs underscore_separated- adalah bahwa itu dengan cepat menjadi lebih menjengkelkan daripada membantu, tetapi selama beberapa minggu itu memperlancar transisi saya untuk (dengan enggan) menerima gaya perusahaan, serta menyediakan outlet untuk menyalurkan kemarahan saya ("ah saya benci itu, biarkan saya menyesuaikan pengaturan lagi ... di sana, setidaknya saya melakukan sesuatu ") ;-)

Bagaimanapun, mode Kacamata tidak menangani penempatan brace, Anda kemungkinan tidak menggunakan Emacs, dan tidak membaca kode secara eksklusif di editor Anda :-(
Tapi poin terakhir juga merupakan peluang - jika Anda membaca kode sebagian besar waktu di alat terpisah, Anda dapat meretas itu untuk mengubah gaya tanpa khawatir tentang memformat ulang round-trip noise - karena hanya baca! Khususnya, jika Anda membaca kode di beberapa antarmuka web, gunakan Greasemonkey.

Berikut adalah beberapa ide yang lebih mudah untuk mitigasi ringan:

  • Pilih font yang lebih luas tetapi tidak terlalu tinggi, untuk merebut kembali garis layar yang hilang.

    • Gunakan layar penuh lebih sering, jika tersedia.
  • Atur kurung kurawal untuk disorot dalam warna yang halus (dan font yang lebih kecil?), Membuatnya kurang terlihat dibandingkan kode lainnya. Lekukan harus cukup untuk membaca, khususnya. dengan ruang kosong dari {garis ...

  • Pastikan editor Anda menyoroti penjepit pembuka yang cocok saat Anda selesai } - mungkin sedikit membantu ketika mata Anda secara naluriah pergi ke tempat yang salah.

  • Re "sulit untuk mengetik": dapatkan editor sungguhan, konfigurasikan untuk membuka baris baru secara otomatis saat Anda menekan {.

Beni Cherniavsky-Paskin
sumber
0

Jalani saja.

Ini jelas kosmetik dan tidak mengubah apa pun tentang kualitas kode atau produktivitas Anda sebagai pengembang. Tidak ada gunanya memulai pertengkaran.

Untuk standar pengkodean semacam itu, saya akan memilih konsistensi di seluruh basis kode dan keterbacaan terhadap pendekatan "keagamaan" tertentu apa pun (bahkan yang beralasan baik) setiap hari.

Memikirkannya sebagai keputusan demokratis dari mayoritas anggota tim tentang masalah yang tidak terlalu penting dapat membantu Anda mengatasinya.

guillaume31
sumber
-2

Ini standar:

http://doh-san.blogspot.com/2005/10/five-monkeys.html

Sebagian besar orang mengatakan "standarnya" mengikuti prinsip "lima monyet".

Segera
sumber
1
dapatkah Anda menjelaskan bagaimana hal itu menjawab pertanyaan?
nyamuk
Bukankah itu jelas?
Mawg mengatakan mengembalikan Monica
-5

Silakan saja dan gunakan gaya yang Anda inginkan. Kemudian gunakan beberapa pembuat kode untuk mengubah kode dalam format standar, atau kanan aplikasi kecil Anda sendiri yang akan mengubah kode dari gaya Anda ke gaya standar yang diberikan. Gunakan ahli kecantikan sebelum memeriksa kode.
Anda juga dapat melakukan sebaliknya untuk mengubah kode check in dari format standar ke format Anda, ketika Anda sedang mengerjakannya.

Manoj R
sumber
2
-1 Inti pertanyaannya adalah bagaimana saya bisa mengatasi ini? , tetapi saran Anda bermuara untuk tidak mencoba untuk melupakannya, tetap lakukan dengan cara Anda. Itu sepertinya tidak membantu. Ini juga tidak terlalu praktis - menggunakan prettyprinter menciptakan kemungkinan kerusakan jaminan, yaitu setelah mengkonversi ke format yang Anda sukai dan kembali lagi, banyak baris mungkin tidak persis sama bahkan jika mereka berarti hal yang persis sama. Itu menciptakan banyak masalah bagi orang-orang yang mencari melalui berbagai versi mencoba untuk mencari tahu apa yang benar-benar berubah.
Caleb
@ Caleb - Mungkin pengalaman Anda menggunakan prettyprinter berbeda. Kami menggunakan Atristic Style dan tidak ada yang mengeluh.
Manoj R
9
Setiap pengembangan perangkat lunak yang serius akan menggunakan sistem kontrol sumber. Memperkenalkan perbedaan yang tidak penting akan menyebabkan masalah dan membuat orang yang melihat perbedaan (s) terganggu - atau lebih buruk, menyebabkan konflik check-in.
doug65536