Apakah perlu membuat komitmen semata-mata untuk menyelesaikan kesalahan ketik yang tidak penting?


67

Jika saya menemukan kesalahan ketik dalam kode (misalnya, tanda kesalahan dalam pernyataan cetak (kesalahan)), apakah ada baiknya membuat komitmen untuk menyelesaikan kesalahan itu, atau haruskah itu dibiarkan begitu saja?

Secara khusus, saya ingin tahu tentang menimbang penyempurnaan log komit terhadap nilai penyelesaian kesalahan ketik yang tidak kritis ini. Saya condong ke arah menyelesaikannya. Apakah saya menjadi orang yang bertele-tele?


40
Jika ada yang sepele melakukan gusi, Anda perlu berinvestasi dalam VCS yang lebih baik, alat pemfilter log yang lebih baik, atau praktik yang lebih baik untuk mengetahui tingkat keparahan yang berbeda dari perbaikan.
Rex Kerr

@ root45 Meskipun jika Anda melihat hasilnya, semuanya adalah tipe tata bahasa yang berbeda dari yang ditanyakan oleh pertanyaan ini.
Izkata

Jawaban:


130

Perasaan pribadi saya adalah bahwa peningkatan kualitas sepadan dengan ketidaknyamanan kecil dari entri log komit tambahan, bahkan untuk perbaikan kecil. Lagi pula, peningkatan kecil sangat penting ketika Anda memfaktorkan efek jendela yang rusak .

Anda mungkin ingin mengawali dengan TRIVIAL:tag, atau menandainya sebagai sepele jika VCS Anda mendukungnya.


72
Hanya ingin menambahkan ini bahwa saya lebih suka hal-hal seperti ini dilakukan secara terpisah daripada disatukan dengan sesuatu yang lain. Masalah dengan lumping adalah bahwa terlalu banyak noise dapat mengalihkan perhatian pengkaji kode dari perubahan yang relevan. +1
Andy

9
+1 untuk menyebutkan efek jendela yang rusak. Hal-hal kecil penting. Jika semuanya benar-benar bersih, orang akan berpikir dua kali sebelum melakukan kode yang ditulis dengan sembrono atau tidak teruji.
Roy Tinker

25
Juga jika Anda menyatukannya dengan fitur, maka peran kembali fitur Anda kehilangan perubahan. Lakukan satu hal pada satu waktu.
ctrl-alt-delor

4
Saya akan sangat tertarik dengan VCS mana yang memungkinkan untuk menandai komentar sebagai hal yang sepele. Saya telah bekerja dengan SVN, Hg dan Git, dan belum melihat hal seperti itu di keduanya.
Xion

3
@Andy kebisingan itu bukan bagian terburuk ... jika seseorang kemudian memutuskan untuk misalnya mengembalikan komit ini karena mereka tidak menginginkan fitur itu, tiba-tiba Anda juga kehilangan peningkatan kecil yang merupakan bagian dari komit.
rFactor

49

Anda tidak bertele-tele, dan lebih baik untuk menyelesaikannya secara individual. Semakin banyak perubahan atom, semakin baik - Anda tidak ingin memperbaiki bug yang menabrak dicampur dengan 500 perubahan komentar / kesalahan ketik.


9
+1 Setiap revisi harus terkait hanya dengan satu perbaikan khusus. Ini menjadi MIMPI BURU untuk perbaikan backport jika setiap revisi juga memiliki banyak kesalahan ketik acak diperbaiki di antara perubahan nyata.
Berikan

28

Dalam Kasus Umum: Ya

Itu selalu layak untuk meningkatkan pemeliharaan perangkat lunak Anda.

Lakukan saja.

Jika Anda baru akan mengirimkan rilis ...

... dan jika Anda bukan pemimpin tim, maka tanyakan padanya .


Mengenai konten dari log komit ...

Saya setuju dengan orang lain bahwa Anda setidaknya harus menulis sesuatu yang membuatnya berbeda dari komitmen terkait "fitur", jika hanya tentang memperbaiki kesalahan ketik yang terisolasi.

Praktik umum adalah memiliki beberapa tugas yang tidak pernah mati di pelacak masalah Anda untuk melacak perubahan abadi dan tak berkesudahan. Misalnya, tidak jarang memiliki tugas untuk:

  • pembersihan otomatis besar yang tidak berbahaya (ruang putih menyapu),
  • kegiatan perburuan tata bahasa dan kesalahan ketik,
  • membangun modifikasi sistem,
  • dll ...

Berhati-hatilah karena ini tidak digunakan sebagai ID tugas yang dibuang untuk apa saja ketika orang menjadi malas membuat tiket yang didokumentasikan dengan benar. Terutama jika Anda menolak komit yang tidak tertaut ke ID (yang merupakan hal yang baik, tetapi tugas besar seperti ini akan lebih menarik bagi pengembang yang malas).


7
Memeriksa pemimpin tim Anda untuk perbaikan kesalahan ketik? Jika saya adalah pemimpin tim yang stres dengan rilis yang akan datang, saya tidak ingin diganggu dengan hal-hal sepele seperti itu.
Yoh

2
@Joh: bukan berarti Anda mungkin harus melanggar pembangunan, tetapi mungkin ada pekerjaan pembangunan lainnya, atau seseorang mungkin sudah ditandai dan siap untuk digunakan, dan kontrol audit Anda (tergantung pada industri Anda) mungkin memaksa Anda untuk mengikat komitmen yang tidak berbahaya ini untuk tugas dan persyaratan, jadi jika itu muncul entah dari mana yang bisa sedikit sakit kepala; yang bisa Anda simpan dengan mudah hanya beberapa hari setelah rilis. Tetapi secara umum, saya setuju dengan Anda, dan saya bahkan mengatakan bahwa perusahaan yang berjalan seperti itu salah. Tapi Anda bukan orang yang akan memperbaikinya, jadi jalankan oleh mereka jika Anda bukan senior.
haylem

2
@Joh: pada dasarnya, jika pemimpin tim saya melihat build baru tiba-tiba melompat pada sistem build ketika dia akan memulai build baru (atau sudah memulainya), maka saya dapat meyakinkan Anda bahwa tingkat stresnya akan naik dengan menggunakan pendekatan ini juga ...
haylem

7

Kesalahan ketik harus ditambahkan sebagai komit. Memperbaiki kata yang salah eja atau kesalahan tata bahasa akan meningkatkan keterbacaan kode Anda.

Menggunakan pesan komit seperti "Fixed typo" atau "Fixed typo in file.c" akan membantu Anda membedakan komit ini dari komit kode utama lainnya.


7

Ya, Anda harus benar-benar melakukan ini, terutama di awal proyek.

Mengapa? Dua poin:

  1. Anda mungkin tidak akan tahu apakah kesalahan ketik "kritis" atau tidak sampai semuanya terlambat. Beberapa perbaikan mungkin tidak diperbaiki karena semua orang berpikir itu tidak akan menjadi masalah besar. Sampai itu.

  2. Memperbaiki kesalahan ketik sejak dini dan dengan sengaja akan jauh lebih mudah daripada memperbaikinya setelah beberapa ratus baris panggilan kode / fungsi dilakukan. Sekali lagi, peretasan sementara bisa menjadi semi permanen secara mengejutkan dengan cepat. Inilah sebabnya saya harus berurusan dengan objek yang memiliki kedua metode "CollapseAll" DAN "ColapseAll".


2
Ya - dari semua jawaban yang benar, saya paling suka yang ini untuk menyebutkan bahwa itu tergantung pada "kapan."
Wonko the Sane

4

Untuk kesalahan tata bahasa yang dapat dilihat oleh pengguna akhir, maka ya, tentu saja layak untuk membuat komit karena sangat mungkin bahwa pengguna atau QA dapat datang dan melaporkan kesalahan dan itu perlu dilacak. Jika sudah diperbaiki maka bisa mempercepat waktu yang dibutuhkan untuk menyelesaikan masalah.

Jika itu adalah kesalahan tata bahasa dalam komentar di sekitar kode, saya tidak akan melakukan apa-apa kecuali itu adalah bagian dari perubahan kode aktual juga dalam hal ini Anda memperbarui dokumentasi kode.


3

Jika Anda khawatir akan membuat log komit, maka Anda melakukan sesuatu yang salah. :-) Sering melakukan adalah hal yang baik! Saya melakukan perbaikan kesalahan ketik sepanjang waktu. Dapatkan mereka dalam basis kode ASAP dan percepat siklus dev!


2
I commit typo fixes all the timeIMO yang mengkhawatirkan, cobalah mencari programmer dengan bahasa Inggris yang lebih baik?
Lie Ryan

Ya ambil apa yang bisa Anda dapatkan hari ini. Menemukan programmer yang dapat menulis kode yang bisa diterapkan sama sekali adalah masalah serius!
Brian Knoblauch

2

Saya memilih ya. Check in Anda bisa membayangkan keadaan kode. Sebenarnya kode itu tidak mengerikan, tetapi keluar seperti pengkhianatan daripada mengalir seperti anggur.


0

Apakah proses manajemen perubahan Anda mengizinkannya?

Di lingkungan saya, setiap komitmen yang saya buat harus diikat kembali ke permintaan perubahan yang telah diminta baik oleh pengguna bisnis atau perubahan tingkat sistem wajib, lengkap dengan proses pengujian pengguna akhir yang sesuai. Kesalahan ketik sederhana seperti yang Anda gambarkan mungkin tidak akan dicatat sebagai salah satu dari kesalahan tersebut (Saya menemukan kesalahan ketik & tata bahasa di salah satu aplikasi saya yang ada selama lebih dari 4 tahun tanpa ada yang memperhatikan), jadi jika / ketika auditor datang menelepon aku akan mengalami kesulitan menjelaskan diriku sendiri.

Saya akan menyimpan perubahan seperti yang Anda gambarkan (dan sebenarnya memilikinya, sebetulnya - nama metode salah eja dan saya baru saja menemukannya) untuk waktu ketika saya memiliki perubahan "nyata" yang perlu dibuat juga dan meletakkan "memperbaiki berbagai kesalahan ketik" di log.


+1 Di beberapa lingkungan ini benar. Tolong jangan downvote hanya karena ini tidak benar di mana Anda bekerja.
MarkJ

-1 proses manajemen perubahan Anda sepertinya menyedot banyak waktu . Saya akan mengerti (dan bahkan lebih suka ) bahwa setiap komit harus dikaitkan dengan perubahan permintaan - ini bagian dari proses Anda terlihat baik-baik saja. Tapi OMG sepertinya permintaan yang diprakarsai pengembang (seperti refactor this / fix typos ) yang dilarang yang menimbulkan bendera merah besar bagi saya. Agaknya asumsi pengguna bisnis / auditor selalu lebih tahu daripada pengembang - jika itu akan mendekati kebenaran, maka mereka akan menulis kode sendiri
Agas

Jika pengembang dapat meyakinkan orang-orang yang setuju untuk maju dengan perubahan yang mereka lakukan, maka mereka dapat bergerak maju. Tetapi jika saya menemukan kesalahan ketik sederhana atas nama metode, atau menemukan beberapa kode yang disalin / ditempelkan yang harus dire-refored menjadi sebuah metode, saya tidak dapat melakukan perubahan tanpa otorisasi. Ini bukan hanya tentang "melakukan hal yang benar dengan kode" - pengujian penerimaan harus dilakukan, dan pengembang tidak dalam posisi di mana mereka dapat mengatakan kepada orang-orang bisnis "Saya membuat perubahan ini, Anda tidak akan pernah melihat apa yang saya memang, tetapi Anda harus melalui siklus tes. "
alroc

@alroc bahwa "jika-bisa-meyakinkan" hanya menyembunyikan proses kontra-produktif di bawah permukaan yang tampak wajar. Persyaratan untuk meyakinkan bisnis / audit tentang perubahan besar, tentang pos pemeriksaan / rilis tonggak yang disepakati dll. Masuk akal, OK. Menghabiskan beberapa jam / hari untuk membenarkan upaya yang membutuhkan satu minggu dev dan QA, itu membosankan tapi adil, oke. Tapi memaksakan ini untuk setiap metode memperbaiki atau mengekstrak ejaan ... beri aku waktu istirahat - ini hanyalah kontrol yang dimasukkan tanpa berpikir pada tahap yang salah di waktu yang salah
Agak

Biarkan saya mencoba menjelaskan ini lagi. Jika saya dapat memperbaiki kesalahan ketik atau mengekstrak metode saat mengerjakan perubahan lain yang disetujui, saya dapat memasukkannya tanpa harus menjual siapa pun di dalamnya. Tetapi saya tidak dapat membuat perubahan yang tidak terlihat oleh pengguna dan tidak memiliki dampak positif langsung pada bisnis / pengguna tanpa menjual kekuatan yang ada di dalamnya terlebih dahulu.
alroc

-1

Gunakan DVCS untuk mengedit riwayat

Jika Anda khawatir tentang riwayat komit yang bersih, pertimbangkan untuk melakukan pekerjaan utama Anda di cabang fitur . Jika Anda bekerja dengan VCS yang didistribusikan , Anda dapat dengan mudah mengedit riwayat komit Anda sebelum mendorongnya ke cabang utama. Jika Anda menggunakan SVN, coba Git - ini dapat berinteraksi dua arah dengan Subversion, dan Anda juga dapat mengedit riwayat sebelum benar-benar melakukan Subversion.

Jaga akal sehat jika tidak

Jika Anda tidak ingin atau tidak dapat mengedit riwayat komit, tidak ada alasan fungsional untuk melakukan komit awal atau atomik untuk kesalahan ketik minor yang tidak memengaruhi pengujian atau kompilasi otomatis . Dalam kasus ini, menurut pendapat saya, menjaga kebersihan commit harus lebih penting daripada melakukan komitmen yang benar-benar atom. Menggabungkan satu atau dua koreksi kesalahan ketik dengan modifikasi "biasa" tidak akan membahayakan proses peninjauan potensial. Namun Anda mungkin ingin mengelompokkan beberapa koreksi sepele menjadi satu komit, mungkin ketika "membersihkan" setelah sesi pengkodean yang lebih besar.

Perhatikan bahwa bug fungsional masih harus dilakukan SECEPATNYA dalam komit atomik.

Nada umum dari jawaban di sini tampaknya menyarankan strategi "komit semuanya cepat" bahkan untuk kesalahan ketik kecil. Saya cenderung tidak setuju dan menyambut diskusi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.