Apakah buruk menggunakan karakter Unicode dalam nama variabel? [Tutup]


82

Saya baru-baru ini mencoba menerapkan algoritma peringkat, AllegSkill, ke Python 3.

Seperti apa matematika itu:

teks alternatif

Tidak benar-benar.

Inilah yang saya tulis:

t = (µw-µl)/c  # those are used in
e = ε/c        # multiple places.
σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Saya benar-benar berpikir itu disayangkan dari Python 3 untuk tidak menerima atau ²sebagai nama variabel.

>>> √ = lambda x: x**.5
  File "<stdin>", line 1
    √ = lambda x: x**.5
      ^
SyntaxError: invalid character in identifier

Apakah saya sudah gila? Haruskah saya menggunakan versi ASCII saja? Mengapa? Bukankah hanya versi ASCII di atas yang lebih sulit untuk memvalidasi kesetaraan dengan formula?

Pikiran Anda, saya mengerti beberapa mesin terbang Unicode terlihat sangat mirip satu sama lain dan beberapa seperti (atau apakah itu ▗▖) atau ╦ tidak bisa masuk akal dalam kode tertulis. Namun, ini hampir tidak berlaku untuk Matematika atau mesin terbang panah.


Per permintaan, versi ASCII saja akan menjadi sesuatu di sepanjang baris:

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

... per setiap langkah algoritma.


58
Itu gila, benar-benar tidak dapat dibaca dan sangat keren.
Dominique McDonnell


3
Saya menemukan hal yang sangat baik bahwa Python tidak menerima operasi aritmatika sebagai variabel. Tanda root kuadrat harus menunjukkan operasi mengambil akar kuadrat, dan tidak boleh menjadi variabel.
David Thornley

4
@ David, tidak ada perbedaan seperti itu di Python. Memang, sqrt = lambda x: x**.5mendapat saya fungsi (lebih tepatnya, sebuah callable): sqrt(2) => 1.41421356237.
badp

4
OutputStream.🚽;

Jawaban:


54

Saya merasa kuat bahwa hanya mengganti σdengan satau sigmaakan menjadi bodoh, berbatasan dengan mati otak.

Apa potensi keuntungannya? Baiklah, mari kita lihat ...

  • Apakah ini meningkatkan keterbacaan? Tidak, tidak sedikit pun. Jika demikian, formula aslinya pasti akan menggunakan huruf Latin juga.

  • Apakah itu meningkatkan kemampuan menulis? Pada pandangan pertama, ya. Tetapi pada yang kedua, tidak. Karena formula ini tidak akan pernah berubah (yah, “tidak pernah”). Biasanya tidak perlu mengubah kode, atau memperpanjangnya menggunakan variabel-variabel ini. Jadi kemampuan menulis - hanya sekali ini - bukan masalah.

Secara pribadi, saya pikir bahasa pemrograman memiliki satu keunggulan dibandingkan rumus matematika: Anda dapat menggunakan pengidentifikasi ekspresif yang bermakna. Dalam matematika, ini biasanya tidak demikian, jadi kami menggunakan variabel satu huruf, kadang-kadang membuatnya menjadi bahasa Yunani.

Tetapi bahasa Yunani bukanlah masalahnya. Pengidentifikasi satu huruf non-deskriptif adalah.

Jadi baik menjaga notasi asli ... setelah semua, jika bahasa pemrograman tidak mendukung Unicode di pengidentifikasi, jadi tidak ada hambatan teknis. Atau gunakan pengidentifikasi yang bermakna. Jangan hanya mengganti mesin terbang Yunani dengan mesin terbang Latin. Atau yang Arab, atau yang Hindi.


3
Beberapa alat tidak dapat membaca karakter unicode, meskipun bahasa pemrograman mendukung penggunaannya. Saya tidak akan menyebutnya keputusan mati-otak untuk menggunakan nama variabel non-unicode, dan ini masih berlaku 2,5 tahun setelah posting Anda.
Gary S. Weaver

44
@Gary "Beberapa alat tidak dapat membaca Unicode" - jadi ubah alat, itu omong kosong. Maaf, ini 2013 dan saya tidak punya simpati dan bahkan kurang sabar untuk alat-alat seperti itu. Katering tanpa henti untuk alat yang rusak mencegah kemajuan.
Konrad Rudolph

3
@KonradRudolph Maksud saya adalah bahwa beberapa alat tidak dan tidak dapat mendukung Unicode untuk alasan apa pun, jadi "ubah alat" tidak selalu merupakan jawaban yang tepat. Saya setuju bahwa Unicode baik dan alat harus memahaminya, tetapi itu tidak selalu menjadi pilihan.

3
@ John I berpendapat bahwa "ganti alat" adalah jawaban yang tepat. Contoh Anda khususnya menggambarkan kasus seperti itu: .propertiesFile Java sepele untuk diurai. Jika Anda benar-benar bekerja dengan rantai alat yang, didukung oleh .propertiesfile, tidak mendukung Unicode, sepenuhnya masuk akal untuk melepaskan rantai alat tersebut (dan menggantinya sendiri, menemukan alternatif, atau, dalam kasus terburuk, komisi satu ). Tentu saja ini tidak berlaku untuk sistem lama. Tetapi untuk sistem lama tidak ada pertimbangan untuk praktik terbaik yang pernah berlaku.
Konrad Rudolph

8
Masalah "pertukaran" yang Anda bicarakan ini tampaknya terutama merupakan masalah pengembang Java dan Windows. Sebagian besar dunia Linux distandarisasi pada UTF-8 lebih dari satu dekade yang lalu. Ini jelas merupakan masalah toolchain. Berhenti menggunakan alat yang buruk.
Pengingat kaya

33

Secara pribadi, saya akan benci melihat kode di mana saya harus membuka peta karakter untuk mengetiknya lagi. Meskipun unicode sangat cocok dengan apa yang ada dalam algoritme, itu benar-benar merusak kemampuan baca dan kemampuan untuk mengedit. Beberapa editor bahkan mungkin tidak memiliki font yang mendukung karakter itu.

Bagaimana dengan alternatif dan hanya naik ke atas //µ = udan menulis semuanya di ascii?


14
Omong-omong, jangan menganggap semua keyboard mengekspos kunci kode standar dengan nyaman. Layout keyboard saya memerlukan tiga tombol untuk mengetik {dan }(yang gagal pada ttys btw) dan benar-benar kurang `dan ~... bagaimana mungkin skrip Bash tidak mengharuskan saya untuk menggunakan peta karakter, jika saya tidak menggunakan custom keymap? :)
badp

4
Saya memasang keyboard Yunani bersama yang asli saya, dan dapat beralih di antara mereka dengan satu keystroke. Ini berguna ketika berbicara tentang matematika pada IM / email ... dan saya sudah berpikir untuk menggunakannya dalam skrip python.
liori

18
Ugh. Hanya mengganti huruf Yunani dengan huruf polos? Tidak ada keuntungan sama sekali. Gunakan nama variabel yang bermakna, atau tempel dengan nama-nama dari kertas. Tidak ada alasan untuk menjadi kreatif.
Konrad Rudolph

12
Hanya saja, jangan mencampur μ dan μ ...
endolith

4
Editor yang masuk akal memiliki metode input yang masuk akal untuk Unicode yang membuatnya mudah untuk mengedit kode seperti ini. Misalnya, Emacs mendukung (antara lain) TeXdan rfc1345. TeXhanya seperti apa rasanya; itu memungkinkan Anda mengetik \sigmauntuk σdan \tountuk . rfc1345memberi Anda beberapa kombinasi seperti &s*untuk σdan &->untuk . Sebagai aturan praktis, saya tidak khawatir tentang mengakomodasi programmer menggunakan editor yang kurang mampu daripada Emacs.
Tikhon Jelvis

31

Argumen ini mengasumsikan Anda tidak memiliki masalah dengan mengetikkan unicodes atau membaca huruf yunani

Inilah argumennya: Anda ingin pi atau circular_ratio?

Dalam hal ini, saya lebih suka pi ke circular_ratio karena saya sudah belajar tentang pi sejak saya masih di sekolah dasar dan saya bisa berharap definisi pi sudah mendarah daging bagi setiap programmer yang membutuhkan garamnya. Oleh karena itu saya tidak keberatan mengetik π berarti circular_ratio.

Namun, bagaimana dengan itu

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

atau

σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Bagi saya, kedua versi itu sama-sama buram, persis seperti piatau apa πadanya, kecuali saya tidak belajar rumus ini di sekolah dasar. winner_sigmadan Wwintidak ada artinya bagi saya, atau bagi orang lain yang membaca kode, dan menggunakan keduanya σwtidak membuatnya lebih baik.

Jadi, menggunakan nama deskriptif, misalnya total_score, winning_ratiodll akan meningkatkan keterbacaan jauh lebih baik daripada menggunakan nama ascii yang hanya melafalkan huruf yunani . Masalahnya bukan bahwa saya tidak bisa membaca huruf Yunani, tapi saya tidak bisa menghubungkan karakter (Yunani atau tidak) dengan "makna" dari variabel.

Anda pasti mengerti masalah sendiri ketika Anda berkomentar: You should have seen the paper. It's just eight pages.... Masalahnya adalah jika Anda mendasarkan penamaan variabel Anda di atas kertas, yang memilih nama huruf tunggal untuk keringkasan daripada keterbacaan (terlepas apakah mereka Yunani), maka orang harus membaca kertas untuk dapat mengaitkan surat-surat dengan "berarti"; ini berarti Anda menempatkan penghalang buatan bagi orang untuk dapat memahami kode Anda, dan itu selalu merupakan hal yang buruk.

Bahkan ketika Anda tinggal di dunia ASCII saja, keduanya a * b / 2dan alpha * beta / 2rendering yang sama buram dari height * base / 2, rumus area segitiga. Ketidak terbaca menggunakan variabel huruf tunggal tumbuh secara eksponensial ketika formula tumbuh dalam kompleksitas, dan formula AllegSkill tentu bukan formula yang sepele.

Variabel huruf tunggal hanya dapat diterima sebagai penghitung putaran sederhana, apakah itu huruf tunggal Yunani atau huruf tunggal ascii, saya tidak peduli; tidak ada variabel lain yang hanya terdiri dari satu huruf. Saya tidak peduli jika Anda menggunakan huruf yunani untuk nama Anda, tetapi ketika Anda menggunakannya, pastikan saya dapat mengaitkan nama-nama itu dengan "makna" tanpa perlu membaca kertas yang sewenang-wenang di tempat lain.

Ketika di sekolah dasar, saya pasti tidak keberatan melihat ekspresi matematika menggunakan simbol seperti: +, -, ×, ÷, untuk aritmatika dasar dan √ () akan menjadi fungsi akar-persegi. Setelah saya lulus sekolah dasar, saya tidak keberatan dengan penambahan simbol baru yang mengkilap: ∫ untuk integrasi. Perhatikan trennya, ini semua operator. Operator jauh lebih banyak digunakan daripada nama variabel, tetapi mereka lebih jarang digunakan kembali untuk makna yang sama sekali berbeda (dalam kasus di mana ahli matematika menggunakan kembali operator, makna baru sering masih memiliki beberapa sifat dasar dari makna lama; ini bukan kasus untuk saat menggunakan kembali nama variabel).

Kesimpulannya, tidak, itu tidak buruk untuk menggunakan karakter Unicode untuk nama variabel; Namun, selalu buruk untuk menggunakan nama huruf tunggal untuk nama variabel, dan diizinkan untuk menggunakan nama Unicode bukan lisensi untuk menggunakan nama variabel huruf tunggal.


9
Sejujurnya, rumus di sini tidak lebih masuk akal bahkan jika saya menggunakan error_on_measured_skill_with_99th_percent_confidencebukan sigma.
badp

4
@badp: Nama panjang! = Nama bagus. Namun demikian, ada saat-saat di mana tidak mungkin bagi Anda untuk memilih nama yang baik (misalnya ketika Anda hanya memahami formula, tetapi tidak sepenuhnya memahami apa yang dilakukan masing-masing bagian formula (yang mengambil tingkat pemahaman yang sama sekali berbeda)), maka dalam hal itu, alternatif terbaik kedua adalah untuk menutupi pantat Anda dengan beberapa komentar (lebih baik daripada mengirimnya ke kertas eksternal). Tambahkan kamus data yang menjelaskan apa yang merujuk pada nama variabel, misalnya // σw = skill level measurement error, dll.
Lie Ryan

1
@badp: Sejujurnya, hanya dengan informasi itu, sigma itu merujuk pada beberapa faktor fudge (bisa dikatakan), itu memberi saya pemahaman yang sedikit lebih baik dari rumus daripada apa yang sigma menyerang saya. Ketika formula sulit dimengerti, Anda tidak ingin menambahkan lebih banyak kekaburan di atasnya.
Lie Ryan

2
Iya. Ini. Sayangnya, saya mengabaikannya ketika menulis jawaban saya.
Konrad Rudolph

3
Nah, siapa pun yang bekerja dalam apa pun yang berkaitan dengan statistik tahu bahwa σ berarti "standar deviasi". Itu simbol standar yang sangat terkenal di domain itu.
TRiG

14

Apakah kamu mengerti kodenya? Apakah semua orang yang perlu membacanya? Jika demikian, tidak ada masalah.

Secara pribadi saya akan senang melihat bagian belakang kode sumber ASCII saja.


Selesai. (Saya menganggap baris terakhir adalah Anda meminta untuk melihat versi ASCII-satunya kode?) [] (Http: // ~)
badp

4
@badp: Tidak, saya yang meminta untuk melihat kematian kode ASCII saja.

sampai Anda mulai melihat apa yang terjadi pada file sumber Unicode saat mendarat di sistem Windows 1252 ...

1
@ Thorbjørn: jika mengandung BOM, maka semoga tidak ada yang terjadi.

9

Ya, Anda tidak waras. Saya pribadi akan merujuk nomor kertas dan formula dalam komentar, dan menulis semuanya dalam ASCII lurus. Kemudian, siapa pun yang tertarik akan dapat mengkorelasikan kode dan rumusnya.


5
Sulit bagi saya untuk memastikan kode dan formula cocok di tempat pertama ...
badp

10
@ Paul: untungnya, Unicode> 10 tahun sehingga keberatan sudah diatasi. Dan meskipun tidak ada pemenang yang jelas antara UTF yang berbeda, itu bukan masalah: seharusnya tidak ada. Membedakannya adalah hal sepele untuk perangkat lunak.
Konrad Rudolph

1
@ Konrad: Maksud saya 10 tahun dari sekarang . Sejumlah besar program masih tidak mendukung Unicode. Selanjutnya, saya tidak setuju dengan pernyataan Anda - Tidak sepele untuk menulis rutin terbalik umum yang menangani ketiga utf. Perlu ada pemenang yang jelas. Tidak ada gunanya mendukung 3 UTF berbeda (jangan anggap halaman kode lain masih ada).
Paul Nathan

3
@ Paul: Seberapa sering Anda perlu menulis "rutin terbalik generik"? Tiga UTF melayani tujuan yang berbeda, dan saya pikir Anda tidak akan pernah mendapatkan keinginan Anda untuk konsolidasi.
Dean Harding

7
@ Paul: sekrup program ini. Ada cukup banyak editor bagus yang tahu cara menangani Unicode. Jika beberapa editor masih belum ikut, biarlah seleksi ekonomi mengurusnya. Dan seperti kata Dean, UTF melayani tujuan yang berbeda. Ini adalah yang baik hal yang mereka ada. Dan saya tidak melihat titik dalam beberapa rutinitas terbalik Anda. Anda hanya perlu menulis satu kali (mengabaikan bentuk normalisasi untuk saat ini): untuk poin kode, bukan untuk UTF individual.
Konrad Rudolph

5

Saya akan mengatakan menggunakan nama variabel Unicode adalah ide yang buruk karena dua alasan:

  1. Mereka adalah PITA untuk mengetik.

  2. Mereka sering terlihat hampir sama dengan huruf bahasa Inggris. Ini adalah alasan yang sama mengapa saya benci melihat huruf Yunani dalam notasi matematika. Coba ceritakan selain dari hal. Ini tidak mudah.


6
Tergantung apa yang Anda gunakan untuk mengetiknya.
endolith

4

Dalam satu kasus ini, rumus matematika yang rumit, saya akan mengatakan untuk itu.

Saya dapat mengatakan dalam 20 tahun saya tidak pernah harus kode sesuatu yang kompleks dan huruf yunani ini tetap dekat dengan matematika asli. Jika Anda tidak dapat memahaminya, Anda seharusnya tidak memeliharanya.

Mengatakan itu, jika saya harus memelihara μ dan σ dalam kode standar rawa yang Anda wariskan kepada saya, saya akan mencari tahu di mana Anda tinggal ...


3
  • Pro: kelihatannya bagus
  • Con: karakter unicode dan seluruh artinya mungkin hilang dalam rantai alat (editor, pemformat kode, kontrol versi, kompiler lama)

Seberapa besar risikonya bagi Anda? Apakah keuntungan melebihi risiko?


2
Rantai alat? Rantai alat apa?
badp

2
Editor, pemformat kode, kontrol versi, kompiler lama. Setiap alat dan orang menyentuh file Anda. Saya punya pengalaman buruk dengan alat-alat yang mengacaukan file unicode, YMMV.
LennyProgrammers

2

Suatu saat dalam waktu yang tidak terlalu lama, kita semua akan menggunakan editor teks / IDE / browser web yang membuatnya mudah untuk menulis teks edit termasuk karakter Yunani Klasik, dll. (Atau mungkin kita semua akan belajar menggunakan ini "disembunyikan "fungsionalitas dalam alat yang saat ini kami gunakan ...)

Tetapi sampai itu terjadi, karakter non ASCII dalam kode sumber program akan sulit untuk ditangani oleh banyak programmer, dan karena itu ide yang buruk jika Anda menulis aplikasi yang mungkin perlu dikelola oleh orang lain.

(Kebetulan alasan Anda dapat memiliki karakter Yunani tetapi bukan tanda akar kuadrat dalam pengidentifikasi Python adalah sederhana. Karakter Yunani diklasifikasikan sebagai Unicode Letters, tetapi tanda akar kuadrat adalah bukan huruf; lihat http://www.python.org / dev / peps / pep-3131 / )


Saya pikir itu akan menjadi ide bagus untuk membuat IME yang dapat menerjemahkan karakter untuk pengguna yang tidak bisa langsung memasukkannya.
AndrejaKo

Ya, kurang lebih ketika kita akan beralih ke DVORAK. :(
badp

1
@AndrejaKo Linux memang memiliki IME yang menerima perintah gaya LaTeX - yaitu, Anda mengetik \mudan menginstalnya µ.
badp

@badp Terima kasih banyak! Saya akan coba itu lain kali saya boot!
AndrejaKo

Emacs mendukung banyak metode input yang bagus yang memudahkan pengetikan simbol Unicode. (Termasuk yang TeX yang saya gunakan.) Emacs hampir tidak futuristik. (Ini adalah mengagumkan, tentu saja.)
Tikhon Jelvis

2

Anda tidak mengatakan apa bahasa / kompiler yang Anda gunakan, tetapi biasanya aturan untuk nama variabel adalah bahwa mereka harus mulai dengan karakter alfabet atau garis bawah, dan hanya berisi alfanumerik dan garis bawah. Unicode √ tidak akan dianggap alfanumerik, karena itu adalah simbol matematika dan bukan huruf. Namun σ mungkin (karena itu dalam alfabet Yunani) dan á mungkin akan dianggap alfanumerik.


1

Saya memposting pertanyaan yang sama di StackOverflow

Saya pasti berpikir bahwa itu layak menggunakan unicode dalam masalah terkait matematika yang berat, karena memungkinkan untuk membaca rumus secara langsung, yang tidak mungkin dilakukan dengan ASCII biasa.

Bayangkan sesi debugging: tentu saja Anda selalu dapat menulis formula yang seharusnya dikomputasi dengan kode untuk melihat apakah benar. Tapi sembilan puluh persen dari waktu, Anda tidak akan repot-repot dan bug bisa tetap tersembunyi untuk waktu yang lama. Dan tidak ada yang pernah mau melihat formula ASCII 7-garis muskil ini. Tentu saja, menggunakan unicode tidak sebagus formula yang dibuat tex, tetapi jauh lebih baik.

Alternatif menggunakan nama deskriptif panjang tidak dapat dilakukan karena dalam matematika, jika pengenalnya tidak pendek, rumusnya akan terlihat lebih rumit (mengapa Anda berpikir orang, sekitar abad XVIII, mulai mengganti "tambah" dengan "+" dan "minus" dengan "-"?).

Secara pribadi, saya juga akan menggunakan beberapa subskrip dan superskrip (saya hanya menyalin-menempelkannya dari halaman ini ). Misalnya: (seandainya python diizinkan √ sebagai pengidentifikasi)

√ = math.sqrt #function alias
c² = c**2
σʷ² = σʷ**2
γ² = γ**2
σ′ʷ = √(σʷ² * (1 - (σʷ²/c²)*Wʷⁱⁿ(t, e)) + γ²)

Di mana saya menggunakan superskrip karena tidak ada yang setara dengan subscript di unicode. (Sayangnya, rangkaian karakter subscript unicode sangat terbatas. Saya berharap suatu hari, subscript dalam unicode akan dianggap sebagai diakritik, yaitu kombinasi dari satu karakter untuk subskrip, dan karakter lain untuk huruf yang disalin)

Satu hal terakhir, saya pikir percakapan tentang penggunaan karakter non-ASCII ini bias, karena banyak programmer tidak pernah berurusan dengan "rumus matematika intensif". Jadi mereka berpikir bahwa pertanyaan ini tidak begitu penting, karena mereka tidak pernah mengalami bagian kode yang signifikan yang akan memerlukan penggunaan pengidentifikasi non-ASCII. Jika Anda salah satu dari mereka (dan saya baru-baru ini), pertimbangkan ini: anggaplah bahwa huruf "a" bukan bagian dari ASCII. Maka Anda akan memiliki ide yang cukup bagus tentang masalah tidak memiliki huruf Yunani, subskrip, superskrip ketika menghitung rumus matematika non-sepele.


0

Apakah kode ini hanya untuk proyek pribadi Anda? Jika demikian, gila, gunakan apa pun yang Anda inginkan.

Apakah kode ini dimaksudkan untuk digunakan orang lain? yaitu, dan aplikasi open source semacam itu? Jika demikian, Anda mungkin hanya meminta masalah karena programmer berbeda menggunakan editor yang berbeda, dan Anda tidak dapat memastikan bahwa semua editor akan mendukung unicode dengan benar. Ditambah lagi, tidak semua shell perintah akan menampilkannya dengan benar ketika file kode sumber diketik / cat'd, dan Anda mungkin mengalami masalah jika Anda perlu menampilkannya dalam html.


0

secara pribadi saya termotivasi untuk mempertimbangkan bahasa pemrograman sebagai alat untuk matematikawan dalam konteks ini, karena saya tidak benar-benar menggunakan matematika yang terlihat seperti itu dalam hidup saya. : D Dan tentu saja, mengapa tidak menggunakan ɛ atau σ atau apa pun - dalam konteks itu, sebenarnya lebih mudah dibaca.

(Meskipun, saya harus mengatakan, preferensi saya adalah mendukung nomor superskrip sebagai panggilan metode langsung, bukan nama variabel. Misalnya 2² = 2 ** 2 = 4, dll.)


-2

Apa itu σ, apa W, apa ε, cdan apa γ?
Anda akan memberi nama variabel Anda dengan cara yang menjelaskan apa tujuan mereka.
Saya pribadi akan memukuli siapa saja yang meninggalkan Unicode atau versi ASCII untuk saya pertahankan, meskipun versi ASCII lebih baik.

Apa yang jahat adalah memanggil variabel σatau satau sigmaatau valueatau var1, karena ini tidak menyampaikan informasi apapun.

Dengan asumsi Anda menulis kode Anda dalam bahasa Inggris (seperti yang saya percaya Anda harus dari mana pun Anda berasal), ASCII harus cukup untuk memberikan variabel Anda nama yang bermakna, sehingga tidak ada kebutuhan aktual untuk Unicode.


2
bagaimana jika dia melakukan copy / paste kertas dan kemudian menjadikannya bagian dari kode sumbernya sebagai komentar meskipun nama variabel satu karakter?
Brian

19
Banyak nama variabel ini memiliki arti yang kuat bagi mereka yang akrab dengan domain masalah. Bagi seseorang yang akrab dengan domain, nama-nama bahasa Inggris mungkin kurang dapat dibaca daripada nama-nama seperti sigma atau rho.
dsimcha

3
Saya khawatir sesuatu seperti rank_error_with_99_pct_confidenceini terlalu lama untuk ini dan tidak akan membuat formula lebih mudah untuk dipahami. AllegSkill / TrueSkill menyebut sigma tersebut, jadi saya percaya sangat diterima bagi saya untuk mempertahankan nama domain spesifik yang mereka miliki.
badp

3
@badp: nama baik ringkas dan deskriptif; tetapi tidak harus sepenuhnya deskriptif. Untuk sigma Anda, itu sangat baik untuk digunakan rank_errordan letakkan detail ekstra tentang kepercayaan 99 persen dalam dokumentasi / komentar di suatu tempat.
Lie Ryan

1
@dsimcha: Saya pikir mereka yang akrab dengan domain tertentu secara signifikan lebih jarang daripada mereka yang tidak pernah mendengarnya. Dan saya pikir mereka yang akrab dengan domain akan dapat mengatasi nama-nama bahasa Inggris biasa, sedangkan mereka yang tidak terbiasa dengan domain itu akan benar-benar tidak dapat memahami apa yang terjadi jika semuanya dikaburkan oleh variabel satu huruf Yunani.
back2dos

-2

Untuk nama variabel dengan asal matematika terkenal ini benar-benar dapat diterima - bahkan lebih disukai. Tetapi jika Anda pernah berharap untuk mendistribusikan kode, Anda harus menempatkan nilai-nilai ini dalam modul, kelas, dll. Sehingga IDE auto-complete dapat menangani "mengetik" karakter aneh.

Menggunakan √ atau ² dalam pengidentifikasi - tidak banyak.

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.