Saat ini saya bekerja di tempat yang mungkin memaksa pengembang untuk menggunakan pemformat kode otomatis pada check-in kontrol versi. Saya mencari pendapat pengembang tentang kelebihan dan kekurangan dari melakukan ini ... bagaimana menurut Anda itu akan membantu atau menghambat pengembang. Kasus spesifik saya melibatkan Java / JSP, tapi saya pikir pertanyaannya bisa berlaku untuk bahasa apa pun.
java
formatting
coding-standards
Nerdfest
sumber
sumber
Jawaban:
Saya pikir sangat penting untuk melakukan ini. Inilah alasannya:
Jika Anda melakukannya, saya akan merekomendasikan semua orang untuk memeriksa semua kode, lalu satu orang melakukan format ulang atas seluruh basis kode, lalu periksa semuanya kembali sehingga ada satu "raksasa" perubahan yang ditetapkan untuk pemformatan (yang dapat diabaikan semua orang), tetapi setelah itu, semua diff adalah diff kode nyata.
Jika Anda melakukannya sedikit demi sedikit, Anda akan mencampurkan perubahan kode nyata dengan memformat perubahan dan hal-hal yang tidak perlu akan berantakan di tanah perubahan.
sumber
Saya akan melemparkan jawaban saya sendiri di sini karena orang-orang sepertinya hanya menambah keuntungan. Apa yang saya lihat sebagai kerugian adalah:
Sederhananya, seperangkat konvensi non-otomatis menetapkan persyaratan gaya / keterbacaan minimum, di mana konvensi otomatis menetapkan minimum dan maksimum.
Saya ingat melihat VB (versi 5 mungkin) dan menemukan salah satu hal yang paling menyebalkan tentang itu adalah bahwa ia akan memformat ulang kode saya secara paksa dan menghapus hal-hal di atas dan di luar pemformatan dasarnya.
sumber
Saya menemukan bahwa pemformatan kode paksa sangat bagus. Ini memungkinkan pengembang untuk melintasi seluruh kumpulan kode tanpa mata mereka terpental ke mana-mana. Juga memiliki standar ini di tempat membantu pengembang pemula menghentikan kebiasaan buruk.
sumber
Kerugian utama adalah kehilangan pemformatan khusus di tempat yang benar-benar penting.
Bayangkan cek kewarasan tipikal jika () yang akan gagal jika ada kondisi spesifik hadir tetapi tidak terpenuhi ...
Ini dapat dibaca berkat indentasi yang masuk akal mengikuti struktur logis dari kondisi.
Sekarang alat otomatis Anda tidak memiliki petunjuk tentang pemisahan logis dari kondisi yang berbeda ke jalur terkait. Tidak ada alasan mengapa masing-masing rumpun 3-4 kondisi dalam satu baris dan membagi kondisi berikutnya menjadi dua. Atau itu akan membaginya, satu ekspresi perbandingan per baris. Bahkan mungkin terlihat lebih cantik di layar tetapi logikanya akan hilang.
sumber
Saya telah menambahkan jawaban dengan kerugian, dan saya akan memasukkan apa yang saya anggap keuntungan besar juga.
Ketika Anda menggunakan memformat ulang kode otomatis saat melakukan, itu sebenarnya membuka kemungkinan variasi preferensi pribadi tanpa efek yang biasa terjadi pada preferensi Anda terhadap orang lain. Anda dapat memiliki kode format IDE ke standar umum saat melakukan, tetapi tampilkan kepada Anda dalam format pilihan Anda tanpa mempengaruhi orang lain.
Bagi saya ini hampir merupakan Holy Grail dari pengkodean berbasis konvensi ... Anda mendapatkan keuntungan dari format kode yang umum, tetapi masih memungkinkan preferensi pribadi didukung tanpa konflik.
sumber
Itu tergantung pada kebutuhan Anda, tetapi beberapa kendala cukup membantu, misalnya setiap if () harus diikuti oleh kurung kurawal, karena cukup mudah untuk mendapatkan jika salah jika Anda refactoring.
Pertimbangkan hal itu:
Jika sekarang Anda ingin menambahkan beberapa logging ke if jika Anda mungkin secara tidak sengaja menulis:
Dan tiba-tiba metode Anda selalu kembali
foo
.Sunting: itu bukan pada pemformatan otomatis melainkan pengecekan gaya. Maaf jika jawaban itu di luar topik juga. :)
sumber
Sangat membantu untuk menyeragamkan kode di perusahaan, dan berkat itu, Anda secara umum menghasilkan struktur yang lebih mudah dipahami dan lebih mudah dirawat untuk produk Anda.
sumber
Yah, keuntungannya sama dengan formatter kode apa pun, seperti standardisasi kode, semantik antar pengembang, dll. Satu-satunya kelemahan yang mungkin saya lihat adalah kurangnya mata manusia setelah memformat, untuk menambahkan beberapa pengecualian, dll.
Jadi saya tebakan lebih baik pertimbangkan formatter IDE daripada formatter waktu check-in.
sumber
Dalam pengalaman saya, itu hal yang baik. Tanpa satu, pembandingan kode sering menunjukkan kekacauan format spasi, dan dapat menyembunyikan perubahan kode aktual. Dalam pengalaman saya, mengacaukan pemformatan seseorang bukanlah dosa yang dibuatnya, terutama dengan manfaat potensial dari konsistensi di seluruh tim.
sumber