Apakah bahasa yang tidak memungkinkan komentar menghasilkan kode yang lebih mudah dibaca? [Tutup]


15

Hanya karena penasaran, saya mulai bertanya-tanya apakah bahasa yang tidak memungkinkan komentar akan menghasilkan kode yang lebih mudah dibaca karena Anda akan dipaksa untuk menulis kode komentar sendiri.

Kemudian lagi, Anda bisa menulis kode yang sama buruknya dengan sebelumnya karena Anda tidak peduli. Tapi apa pendapat kamu?


44
Apakah Anda pikir ada perbedaan antara bahasa yang tidak memungkinkan komentar dan pengembang yang tidak menggunakannya?
Jeremy Heiler

21
Gagasan bahwa menolak komentar akan memaksa pengembang untuk menulis lebih banyak kode yang bisa didokumentasikan sendiri tidak masuk akal.
Adam Crossland

2
@ Jeff yang merupakan fitur IDE / editor bukan fitur langugae IMHO
jk.

4
Saya tidak yakin mungkin untuk memaksa pengembang untuk melakukan apa pun
jk.

2
@Adam @ jk01: mereka bahkan memiliki bahasa yang memaksa pengembang untuk membuat indentasi kode dengan cara tertentu ;-)
Joris Meys

Jawaban:


61

Saya pikir programmer akan mencari cara lain untuk menambahkan komentar ...

string aComment = "This is a kludge.";

7
Saya suka bagaimana "komentar" ini berlapis
Logan Capaldo

29
Manfaat tambahan adalah bahwa ia akan masuk dalam biner, sehingga Anda dapat melihat komentar di sana juga! Membuat reverse engineering jauh lebih sederhana.

1
Kamu benar. Kami harus menggunakan pernyataan #ifdef sebagai gantinya.
James

9
Ini mungkin contoh terbaik dari "pemrograman ke dalam bahasa" dibandingkan dengan "pemrograman dalam bahasa" yang pernah saya lihat. =)
gablin

2
Di MOO ada dukungan untuk komentar, tetapi semua program diuraikan untuk penyimpanan dan tidak diuraikan untuk ditampilkan sehingga komentar hilang. Ungkapan untuk komentar gigih adalah string literal ala"this is a comment";
Ben Jackson

44

Saya tidak berpikir sesederhana itu:

bahkan dalam kode yang dapat ditulis sendiri dan didokumentasikan sendiri, ada situasi yang sah di mana Anda harus menulis komentar.


13
+1 untuk komentar yang lebih dari sekadar narasi sederhana tentang apa yang dilakukan kode. Bahkan 'kode dokumentasi diri' terbaik pun perlu memiliki komentar untuk penjabaran banyak hal. Sering kali, kode akan memiliki dependensi eksternal, asumsi input, peringatan, area yang dapat diperbaiki, kerentanan yang diketahui dan banyak hal lain yang tidak pernah diakui. Komentar memiliki banyak kegunaan.
Adam Crossland

3
Persis. Bagaimana Anda mendaftar "niat" atau "mengapa" atau "bukti kebenaran" tanpa komentar?
S.Lott

2
Setuju, komentar harus "Mengapa" dan bukan "Apa". Siapa pun yang tidak bisa mendapatkan Apa dari kode tidak boleh membacanya.
Matius Baca

3
@ Matthew: Agar adil, Anda dapat dengan mudah menulis kode yang tidak mudah diuraikan. Tapi ya, kode yang dapat dibaca adalah sumber terbaik untuk "apa".

14

Andaikata Anda seorang programmer yang sempurna (yang bukan Anda, tapi anggap saja) ...

Ada banyak efek tidak jelas yang dapat terjadi dalam kode ketika Anda berinteraksi dengan hal-hal yang tidak Anda tulis. Sebagai contoh, bisa ada cacat desain perpustakaan orang lain, atau (jika Anda seorang pengembang kernel) di perangkat keras orang lain. Memiliki komentar untuk menjelaskan mengapa Anda menggunakan kludge tertentu di tempat tertentu dapat menjadi sangat penting untuk memahami kode, dan memastikan kludge tidak dihapus (merusak barang).


11

Sulit bagi saya untuk membungkus pikiran saya di sekitar gagasan bahwa menghapus opsi dari suatu bahasa entah bagaimana akan membuat program yang ditulis dalam bahasa tersebut lebih baik. Komentar tidak wajib, dan menulis kode dokumentasi sendiri juga tidak.

Tidak ada pengganti untuk praktik pembangunan yang baik.


6

Secara teori, COBOL pada awalnya dirancang sedemikian rupa sehingga dimaksudkan untuk mendokumentasikan diri sendiri sehingga bahkan non-pengembang (yaitu pengawas) dapat meninjau kode yang ditulis dan menentukan apa yang sedang terjadi. Namun, dalam praktiknya, ketika sebuah program tumbuh lebih kompleks, sulit untuk memahami segala sesuatu yang terjadi hanya melalui kode.

Sementara menghapus komentar mungkin memaksa beberapa pengembang untuk menulis kode yang lebih baik di dokumentasi diri, masih ada pengembang di luar sana yang menulis kode kurang didokumentasikan (yaitu nama variabel a, b, c, dll) dan itu adalah kebiasaan bahwa orang perlu dilatih keluar dari dari. Dalam kasus tersebut, menghapus komentar tidak akan memengaruhi pengembang tersebut dan dapat menghalangi upaya pengembang lain untuk menjelaskan bagian kode yang rumit.


1
Saya membaca beberapa kode sekarang dengan ini: argument = 3.0; aa = sqrt( argument ); bb = f( aa ); Sigh.
S.Lott

Cobol adalah bahasa khusus. Tetapi "." Operator jahat !!! Agak melanggar sintaks kalimat.
Loïc Faure-Lacroix

3

Setiap program ditulis untuk mengimplementasikan persyaratan fungsional yang berada di luar program, baik yang tertulis atau hanya di kepala seseorang.

Saya pikir fungsi komentar yang paling penting adalah membuat pemetaan antara persyaratan dan kode. Alasan pemetaan diperlukan adalah untuk mengizinkan perubahan tambahan. Ketika terjadi perubahan pada persyaratan, perlu untuk membuat perubahan yang sesuai dengan kode, jika kode tetap menjadi solusi untuk persyaratan. Komentar berfungsi sebagai peta jalan untuk perubahan.

Jika bahasa adalah domain-spesifik-bahasa ideal (DSL) yang ideal disesuaikan dengan masalah yang dipecahkan, maka pemetaan harus menjadi isomorfisme sederhana, dan komentar tidak akan diperlukan. Kode sumber hanya akan menyatakan masalah, dan tidak ada lagi yang perlu dikatakan. Solusi masalah akan terkubur dalam implementasi bahasa.

Karena bahasa tempat kami bekerja bukanlah DSL seperti itu, dan akan tetap demikian untuk beberapa waktu, kami masih membutuhkan komentar . Ini masalah derajat. Terkadang masalahnya cocok dengan bahasa yang ada, tetapi biasanya tidak.

Lihat juga...


2

Saya bekerja di suatu tempat yang tidak memungkinkan komentar sebaris (yaitu Anda hanya dapat memiliki komentar di bagian atas fungsi). Tidak, itu tidak membuat kode lebih mudah dibaca. Itu membuat urutan besarnya lebih buruk.


Dengan asumsi tidak ada batasan jumlah metode, mengapa Anda tidak hanya memperbaiki blok kode Anda menjadi metode yang berlaku dan kemudian memberikan nama metode deskriptif (atau lebih banyak komentar, dalam kasus Anda)? Pada sebagian besar kode "baik" yang saya lihat, metode jarang lebih panjang dari sekitar 10 baris, dan cukup jelas apa fungsinya.
Scott Whitlock

@Scott - Saya seorang advokat yang tegas bahwa kode harus mendokumentasikan diri sendiri dan komentar inline harus dihindari, tetapi secara eksplisit melarangnya terlalu banyak.
Jason Baker

@Jason - Saya setuju dengan Anda, tapi saya hanya tidak setuju dengan gagasan bahwa tanpa komentar sebaris itu "perintah besarnya lebih buruk".
Scott Whitlock

@Scott: Anda mendapatkan banyak komentar seperti "alasan kami melakukan pemeriksaan nol aneh pada baris 37 adalah ..." dan kemudian Anda harus mengarahkan mata Anda di antara kode dan komentar. Akan jauh lebih mudah untuk hanya memiliki komentar di atas baris 37.
Xodarap

2

Saya menghindari kode komentar, dan itu berfungsi.

Saya menghindari semua komentar dalam-kode (sebaris atau aliran) yang mendukung docblock + varables yang bermakna + pemrograman sederhana , dan itu berfungsi.

Dan ya, saya tahu docblock adalah komentar teknis, masih, mereka sebenarnya saling melengkapi kode, tidak mengganggu dan "standar" ... semua komentar umum tidak.

Apa yang saya pikir bisa berfungsi sebagai pengganti komentar: bahasa docblock standar / sintaks / idiom, sesuatu seperti penjelasan di java.


"bahasa docblock standar / sintaks / idiom": Tidak akan doxygenbekerja untuk ini? en.wikipedia.org/wiki/Doxygen
sleske

Doxygen adalah alat dokumentasi, sama seperti phpdocumentor dan hal yang menghasilkan dokumentasi Java dari javadoc (homonim?). Maksud saya adalah bahwa bahasa / sintaks / idiom adalah bagian dari bahasa pemrograman itu sendiri, dan bukan komentar yang harus diurai untuk tag / properti.
dukeofgaming

4
Jadi, Anda menghindari komentar dengan menyebut mereka sesuatu yang lain.
Nate CK

2

Tidak hanya itu tidak akan mempengaruhi kualitas - seperti yang diamati orang lain, itu sebenarnya akan sangat mengganggu.

Saya yakin sebagian besar dari kita telah melakukan hal seperti ini dari waktu ke waktu:

foreach ( myObject obj in SomeList )
 {
    Debug.Writeline( obj.Name );
//  for some reason this isn't working
//  obj.SetArielPotency( setting );
//  obj.DoSomeProcess();       
 }

Betapa menjengkelkannya jika Anda tidak bisa mengomentari beberapa baris kode untuk mencari tahu dari mana bug itu berasal?

Terlepas dari komentar tentang bagaimana kode beroperasi, hal-hal praktis sederhana seperti itu atau memasukkan TODOcatatan yang mudah digunakan adalah hal-hal yang membuatnya lebih mudah untuk memperbaiki masalah kecil dan mengingat apa yang kami lakukan ketika kami mulai menulis kode.


1

Komentar seperti ringkasan buku. Tentu, Anda dapat memahami semuanya dengan membaca kode, tetapi mengapa Anda ingin membaca seluruh halaman ketika bisa diringkas dalam satu baris komentar?


3
Jika Anda dapat meringkasnya dalam satu baris, Anda dapat menyebutkan fungsi atau metode secara deskriptif untuk menjelaskan apa yang dilakukannya.
Scott Whitlock

1

Sementara saya setuju dengan jawaban lain yang bahkan mendokumentasikan kode diri membutuhkan komentar, itu hanya relevan untuk saat ini bahasa .

Saya pikir pertanyaan sebenarnya adalah, "Apakah mungkin untuk merancang bahasa pemrograman baru yang tidak memerlukan komentar?" Itu harus cukup tinggi dengan abstraksi yang besar. Setiap pernyataan dan fungsi akan dipaksa untuk dapat dibaca melalui sintaks bahasa.


1
Pemrograman melek menawarkan bahasa yang tidak membutuhkan komentar. Anda menulis dokumen Anda, yang mencakup semua penjelasan yang diperlukan, dukungan, bukti, maksud, pertukaran, kludges, dll., Serta kode. Karena kode ini tidak dimaksudkan untuk berdiri sendiri, ia berfungsi dengan baik.
S.Lott

@DisgrunteldGoat: lupakan itu. Anda harus mulai dari bahasa tertentu, dan saya hanya bisa bicara 5. Semua bahasa yang tersisa saya akan hilang seperti halnya Anda menggunakan bahasa Belanda.
Joris Meys

Re paragraf kedua: tentu saja Anda bisa. Ambil semua bahasa saat ini yang menawarkan dukungan komentar, dan hapus dukungan komentar. Jika bahasa-bahasa ini membutuhkan komentar, maka mereka akan berada dalam kode yang dikompilasi atau penerjemah akan melakukan sesuatu selain mengabaikannya.
Kit

1

Pemrogram yang tidak disiplin akan menulis kode yang buruk, apa pun bahasanya.

Membuat penasaran yang python, yang hanya memiliki swasta dengan konvensi (_-prefix), tidak tidak melakukan usaha apapun ke polisi ini, dan banyak kode baik masih sedang ditulis.

Kata-kata kasar: Kadang-kadang saya berpikir bahasa yang lebih permisif akan memaksa lebih banyak orang untuk belajar kode dengan benar, bukan sebaliknya (yaitu hanya Java satu arah dan terkutuklah Anda jika Anda ingin menganggap fungsi sebagai objek kelas satu).


1

Saya kira: mungkin tidak. Mengapa? Karena Anda harus menyandikan "mengapa" sebagai formalisme dalam bahasa dan karena "mengapa", apakah disandikan dalam bahasa atau komentar dalam bahasa tetap kurang dimanfaatkan oleh para programmer.


1

Kode tentu saja dapat berkomentar sendiri dalam menjelaskan apa yang dilakukannya, tetapi kode tidak selalu mungkin untuk menjelaskan alasannya ia melakukannya. Di situlah komentar paling dibutuhkan.

Jika, misalnya, bagian kode diperlukan untuk mematuhi peraturan tertentu, bagaimana Anda menjelaskannya tanpa komentar? Jika algoritma yang digunakan oleh potongan kode tertentu dijelaskan dalam makalah yang ditulis pada tahun 1998 oleh M. Matsumoto dan T. Nishimura, bagaimana Anda menjelaskannya tanpa komentar? Jika suatu algoritma tidak memberikan fungsi optimal yang tepat tetapi membuat kompromi yang sangat spesifik yang dapat menyebabkan masalah di masa depan jika kode lain diubah, bagaimana Anda menjelaskannya tanpa komentar?

Bagaimana jika satu bagian kode diaudit oleh auditor independen sehingga tidak dapat dimodifikasi tanpa memvalidasi audit tersebut dan kode tersebut digunakan untuk membangun produk yang kepatuhannya terhadap audit tersebut diperlukan oleh pelanggan Anda. Bagaimana Anda menunjukkan itu tanpa komentar?


0

Saya selalu berpikir bahwa mungkin menyenangkan untuk memiliki komentar satu kata sehingga jika Anda awalan kata dengan simbol (katakanlah titik dua), kata itu akan diabaikan. Dengan begitu, Anda bisa mengatakan bahwa ia hanya mengizinkan satu kata komentar di dalam ekspresi-s. Misalnya, Anda dapat mengubah ini:

(if (= x y)
    x
    y)

... dalam hal ini:

(if (= x y)
    :then x
    :else y)

Jika benar-benar harus, Anda dapat membuat beberapa komentar satu kata untuk membentuk komentar sebaris:

(if x :Remember, :x :could :be :nil!
    ...)

Tentu saja, ini sulit untuk diketik. Bahkan, itulah intinya. Ini mendorong Anda untuk menggunakan komentar sebaris hemat dan menjaga mereka singkat dan to the point. Tetapi saya merasa bahwa saya akan kesulitan meyakinkan siapa pun untuk menggunakan bahasa tersebut.


Itu juga membuatnya sulit dibaca, yang mengalahkan penggunaan komentar untuk membuat kode lebih mudah dibaca.
Nate CK

0

Ini ganda atau tidak sama sekali. Beberapa programmer tidak melakukan apa pun untuk membuat kode dapat dibaca. Tidak mengizinkan komentar akan memperkuat ini. Beberapa programmer menulis komentar yang baik, bahkan jika mereka akan lebih baik jika mereka adalah kode refactoring daripada komentar - menghapus komentar mungkin memaksa mereka untuk melakukan refactoring yang lebih baik.

Alasan mengapa ini adalah ide yang bagus: - Tidak ada

Alasan mengapa ini adalah ide yang buruk: - Ada banyak programmer yang lebih mengerikan daripada programmer yang baik tapi tidak hebat - Seharusnya selalu ada beberapa komentar untuk gotcha, ringkasan, dll. - Bahkan jika Anda menghindari komentar, Anda mungkin akan menggunakan komentar sebagai tahap dalam perjalanan: berikan komentar saat Anda sedang menulis sesuatu, lalu kembali dan lakukan refactor. Tetapi Anda tidak dapat selalu melakukannya dengan segera karena Anda masih belajar. - Ini akan mendorong orang untuk mengerjakannya - Siapa yang akan menggunakannya? Orang-orang yang menulis kode yang tidak dapat dibaca dan menginginkan alasan (buruk) dan orang-orang yang sudah terpikat pada ide tersebut (yang bisa "tidak menulis komentar" untuk memulai). Jika ini yang Anda inginkan, tulis saja standar pengkodean yang menunjukkan bagaimana Anda ingin orang melakukannya.

Alasan di mana ini mungkin relevan - Di mana itu bisa berguna adalah sebagai bagian dari sistem untuk membuat "tidak berkomentar" lebih baik, misalnya. bahasa atau IDE yang memiliki dukungan yang baik untuk sesuatu yang lebih baik daripada komentar dan sebagai bagian dari nada, eschews komentar. Saya tidak tahu bagaimana cara kerjanya, tetapi itu adalah poin yang baik setidaknya untuk dipikirkan.

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.