Mengapa kita menggunakan kode nama internal non-deskriptif? [Tutup]

16

Saya pikir menggunakan nama kode cukup luas. Perusahaan kami juga menggunakannya.

Tapi perhatian utama saya adalah nama-nama ini biasanya tidak didokumentasikan di mana pun. Dan maknanya disebarkan dari mulut ke mulut. Dan namanya tidak ada hubungannya dengan fungsi alat atau entitas yang dinamai.

Saya melihat pola bahwa mesin uji internal dinamai berdasarkan rasi bintang, server yang menghadap publik dinamai dewa-dewa Yunani. Dan proyek diberi nama berdasarkan tempat atau nama bintang film atau nama karakter yang dipilih secara acak. Tetapi tidak ada informasi yang tersedia secara langsung dari nama apakah mesin itu Windows atau Linux; Server 32 atau 64 bit. Atau apa proyeknya.

Saya hanya punya firasat buruk ketika saya melihat pesan komit dari VCS bahwa seseorang baru saja bercabang proyek "Gandalf" atau proyek "Callanish" atau proyek apa pun. Hanya untuk alasan yang sama, Anda biasanya tidak memberi nama fungsi dan variabel Anda seperti itu.

Saya mengusulkan agar kita harus menggunakan nama yang lebih deskriptif, setidaknya untuk entitas baru, tetapi saya menghadapi oposisi yang sangat kuat. Rupanya semua orang di organisasi kecuali saya suka menyebutkan hal-hal seperti itu.

Jadi mengapa kita menggunakan nama kode non-deskriptif?

Jangan salah paham. Saya tidak memiliki masalah dalam menentukan versi dan tonggak program, atau memiliki nama produk yang bagus untuk alasan pemasaran. Tapi semua tempat lain saya lebih suka melihat nama deskriptif.

EDIT:

Untuk memberi Anda beberapa konteks: Gandalf adalah proyek yang port kode 64 bit. Callanish adalah port yang ke Android ... Saya lebih suka memanggil 64bit cabang sebelumnya dan Androidporting kedua. Mungkin sufiks yang melekat padanya menunjukkan versi target yang kami rencanakan untuk dikirimkan. Jadi semua orang akan tahu dengan nama apa itu.

Server yang dimaksud adalah gambar mesin virtual yang kami uji pada produk ... Saya tidak tahu mesin fisik yang sebenarnya berjalan. Jadi memanggil mereka windowsxp_32, windows7_64, debian_32 atau solaris_64 benar-benar baik-baik saja.

Calmarius
sumber
6
Apa yang deskriptif bagi Anda mungkin tidak cukup deskriptif (atau singkat) untuk orang lain. Nama adalah nama adalah nama. Tidak ada kebingungan atau perbedaan pendapat.
Robbie Dee
1
Begitu banyak jawaban, namun, jika Anda mengajukan pertanyaan "Haruskah saya memberi nama server saya dengan sengaja atau oleh dewa-dewa Yunani?", Saya menduga / berharap tujuan akan disarankan. Dan ya, fileserver4 lebih mudah diingat daripada Aphrodita, dalam hal mengingat yang merupakan server dengan ftp.
Vorac
2
Pertanyaan ini tampaknya di luar topik karena tidak terkait dengan pengembangan perangkat lunak.
Mike Partridge
4
Apa namanya? Apa yang kita sebut mawar dengan kata lain akan berbau manis.
Caleb
3
Saya harap cabang Gandalf bukan kode nama untuk kerangka kerja pengujian unit. Apa pun yang berjalan melewatinya TIDAK AKAN LULUS!
corsiKa

Jawaban:

25

Kami tidak mereferensikan orang dengan karakteristik mereka karena dibutuhkan sepanjang hari untuk membuat daftar mereka dengan cukup detail agar tidak ambigu dan karakteristik dapat berubah. Bagaimana jika mereka potong rambut? Sebaliknya, kami memberi mereka nama. Juga, orang lebih baik dalam mengingat kata-kata daripada aliran simbol acak.

Penafian: Ini akan berisi beberapa pendapat dan dongeng anekdotal karena pertanyaan itu.

Di tempat saya bekerja beberapa tahun yang lalu, semua server kami diberi nama setelah bulan dan bagian tubuh. "Rhea", "Miranda", "paru-paru", "ginjal" dll.

Tinggi, memutuskan, seperti Anda, bahwa ini semua agak konyol dan kita harus mengubahnya menjadi lebih "deskriptif" nama-nama seperti "arc-sql-w-4" atau "lon-web-lin-2". Ini disambut dengan banyak pertentangan. Tapi itu berhasil. Kami mengganti nama semuanya.

Jadi apa yang salah?

Sebelumnya, kita akan tahu dari atas kepala kita mesin mana yang merupakan basis data utama dan yang merupakan budak karena kita dapat mengingat "hati" yang dikendalikan "kepala" atau bahwa "Tarvos" adalah server aplikasi untuk X. Apa pun. Sekarang kami harus mengingat tumpukan simbol yang sebagian, tetapi tidak sepenuhnya menggambarkan mesin yang kami cari. Kami harus tahu melalui beberapa tabel pencarian di kepala kami bahwa "lon-web-lin-1" adalah server aplikasi untuk produk A dan "lon-web-lin-2" untuk produk B.

Ini mirip dengan alasan Anda harus menggunakan kata sandi seperti FartDownTrousersForALivingDoYou? bukannya 43gH5 # € 1. Orang pandai mengingat kata-kata, bukan tumpukan sampah acak. Kata-kata adalah simbol yang merujuk pada sesuatu.

Masalah lain (yang mungkin lebih praktis) adalah Anda mengikat DNS dan nama server Anda ke fungsinya. Yang berarti Anda tidak dapat mengubah fungsi tanpa mengubah nama. Bagi kami ini termasuk lokasi fisik dan sistem operasi juga. Yang merupakan rasa sakit luar biasa di pantat.

Juga, dan ini adalah poin terakhir. Nama jauh lebih menyenangkan.

Bagaimana dengan nama proyek?

Nah, alih-alih "Proyek Gandalf" apa yang Anda usulkan? "Project prototype function X dan lihat apakah kita dapat mengubahnya menjadi produk"? Bagaimana jika lingkup proyek berubah, lalu kita ganti nama proyek? Sekali lagi, nama adalah simbol steno yang merujuk pada berbagai hal.

tom
sumber
5
Sepertinya Anda mengubah metafora deskriptif untuk hieroglif non-deskriptif. Anda harus menerapkan pola penamaan yang menjelaskan produk mana yang berjalan di server mana. Itulah yang menjadi "deskriptif" tentang;)
back2dos
9
@ back2dos - Dan ketika aplikasi baru dikerahkan ke server atau aplikasi yang ada pindah ke server yang berbeda, apakah Anda mengganti nama semua server yang terpengaruh? Bagaimana ketika Produk A diganti namanya (karena kita tidak menggunakan nama kode)? Apakah Anda akan mengubah di mana saja nama itu disimpan pada klien? Atau apakah Anda akan meninggalkan alias DNS yang menyesatkan untuk meminimalkan ruang lingkup perubahan?
Justin Cave
5
@ back2dos - Mengganti nama server (dan memperbarui semua klien) setiap kali aplikasi baru digunakan akan sangat menyakitkan dengan cepat. Apa yang terjadi ketika Anda menyebarkan aplikasi ke-10 ke server tertentu? Apa yang terjadi ketika Anda memiliki ratusan mesin klien yang memiliki referensi ke nama server tertentu? db3.todoapplebih informatif jika server hanya menangani todoapp. Jika pemasaran memutuskan untuk memanggil aplikasi "Organizer Pro" dan Anda memiliki 8 aplikasi lain di server, mengelola nama menjadi sangat rumit.
Justin Cave
4
Juga, apa yang terjadi ketika mesin memiliki lebih dari satu fungsi? Nama menjadi besar secara tidak terkelola atau gagal untuk menggambarkan secara akurat.
tom
3
Sulit untuk tidak setuju dengan back2dos. "hieroglif non-deskriptif" adalah persis apa yang saya pikirkan ketika membaca contoh Anda. Perbedaan antara peran dan identitas back2do juga sangat relevan. Di perusahaan saya, server dinamai sesuai dengan peran mereka, dan nama seperti "http-blog-db-failover" tampaknya jauh lebih eksplisit daripada "Hermione", dan namanya tidak akan berubah ketika saya beralih dari MongoDB ke CouchDB atau ketika pemasaran memutuskan untuk mengubah nama komersial dari situs web yang menampung blog.
Arseni Mourzenko
10

Memberi nama benda berdasarkan sifat mereka adalah ide yang pada dasarnya buruk. Alasannya adalah bahwa properti , menurut definisi, fenomena yang dapat berubah, sedangkan identitas sesuatu tetap sama bahkan jika properti diubah.

Seseorang memutuskan bahwa server file harus dimigrasikan ke Linux? Jika namanya "Apollo", itu tidak masalah. Jika nama tersebut dirujuk "windows", maka itu akan menjadi menyesatkan, atau harus diubah di mana-mana dengan biaya atau risiko besar. Anda memperkenalkan format output baru? Demi cinta Tuhan, jangan menyebutnya 'newFormat'! Ini akan akhirnya akan digantikan lagi, dan format bahkan lebih baru akan memerlukan sebuah nama yang lebih deskriptif untuk membedakannya. Sebut saja '3', sehingga nanti Anda dapat meningkatkannya ke '4', atau 'emas' sehingga Anda dapat meningkatkan ke 'platinum'.

(Alasan tambahan adalah bahwa nama-nama yang terdiri dari nugget informasi tidak berguna. Tidak ada yang mau bekerja pada komputer bernama "PC-Marketing-Windows7-143" - mereka akan menggunakan "Apollo" atau bahkan "Bacchus" di atas itu setiap hari. Tapi poin utamanya adalah pembagian identitas / properti.)

Kilian Foth
sumber
5
Nama deskriptif tidak menggambarkan properti tetapi tujuan . Jika Anda memanggil fungsi yang menampilkan output Hermesmaka ya, itu lebih dikenali daripada functionWithTenLinesOfCode. Secara pribadi, saya akan menyebutnya begitu print.
back2dos
@ back2dos Contoh-contoh OP memberi tampaknya menggambarkan setaraprint_left_aligned_to_CRT_monitor()
Izkata
@Izkata: Anda harus mengakui, itu jauh lebih baik daripada Cathy(). catatan: Saya pribadi melihat kode produksi dengan nama-nama fungsi dan variabel yang mengutip lirik Guns & Roses dan saya bersalah menulis kode produksi dengan nama-nama variabel dan fungsi yang merujuk pada Buffy.
Slebetman
10

Ada 3 alasan, dalam pengalaman saya:

  1. Ketika Anda harus menyebutkan banyak hal serupa, akan sulit untuk menemukan nama deskriptif yang unik untuk semuanya. Orang perlu cara unik singkat untuk merujuknya, dan kami lebih baik dalam menggunakan nama daripada menggunakan angka (kecuali jumlahnya sangat pendek). Ketika Anda memberi nama, itu cenderung untuk mengambil kepribadian dalam pikiran Anda, sehingga Anda akan ingat bahwa server Gandalf adalah orang dengan konektor daya serpih lebih baik daripada SERWIN15AB23. Ini juga lebih kecil kemungkinannya Anda akan mengacaukan keduanya dengan salah ketik.

  2. Proses penamaan bisa menyenangkan. Beberapa perusahaan melakukannya dengan suara. Orang lain senang datang dengan nama-nama unik. Tanyakan saja pada orangtua mana saja.

  3. Untuk proyek eksternal, biasanya pemasaranlah yang menentukan apa namanya, dan biasanya mereka melakukannya tepat sebelum dikirimkan. Kapan Microsoft memutuskan untuk memanggil OS terbaru "Windows 10"? Saya ragu itu selalu disebut itu. Proyek ini mungkin dalam pengembangan untuk waktu yang lama sebelum itu, dan dalam beberapa kasus Anda ingin mengaburkannya sehingga orang-orang di luar perusahaan tidak tahu apa yang Anda bicarakan.

Scott Whitlock
sumber
5
Perlu juga ditambahkan bahwa nama dapat disesuaikan dengan tugas yang dimaksud. Gandalf mungkin adalah server pembangun "tempat keajaiban terjadi", Cerberus mungkin firewall, Hephaestus server dev, dll ... sangat sulit untuk mengaitkan angka dengan fungsi
Liath
1
By the way: Nama internal untuk "Windows 10" sebenarnya "Windows NT 6.4". Tetapi pemasaran tidak akan pernah mengakui bahwa 6.0 alias "Vista" adalah versi terakhir di mana kernel sistem operasi mendapat desain ulang utama.
Philipp
@ Pilip cukup ketik "ver" ke baris perintah mesin Windows 7 - 6.1 (vista SP1 yang selalu menjadi lelucon), tidak yakin apa Windows 8 dari atas kepala saya.
Liath
Windows 8.1 Pro (Saya yakin PC ini tidak memiliki Pembaruan 1): 6.3.9600 msdn.microsoft.com/en-us/library/windows/desktop/…
WernerCD
@Philipp AFAIK, itu dilakukan untuk alasan kompatibilitas mundur, itu tidak mencerminkan berapa banyak perubahan kernel.
svick
6

Penamaan deskriptif sulit ™, jauh lebih mudah jika Anda sudah memiliki tema yang secara otomatis dilengkapi dengan daftar kata yang dapat Anda gunakan.

Bila Anda memiliki beberapa objek yang sama penamaan mereka foo1.6, foo1.2, dll cepat mendapat membingungkan / rentan terhadap kesalahan. Misalnya ketika Anda perlu menjalankan tes VirgoAnda maka Anda akan segera melihat kesalahan jika Anda kebetulan berada di sana Cancer.

Itu juga membuat pertemuan yang menghibur ketika konvensi penamaan diluncurkan dan keputusan dibuat untuk mendasarkan nama ruang konferensi setelah genre musik dan Anda menamai kafetaria Salsa.

ratchet freak
sumber
1
Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.Sangat benar. Tetapi hanya karena lebih mudah, tidak berarti itu baik dalam jangka panjang. Apa yang Anda katakan tidak berbeda dengan tidak melakukan desain API yang tepat, karena jauh lebih mudah untuk hanya menghasilkan fungsionalitas.
back2dos
4

Ini mungkin terkait dengan konteks tinggi atau budaya konteks rendah . Setiap perusahaan, organisasi, atau tim memiliki budaya sendiri. Budaya konteks tinggi atau rendah berarti seberapa banyak informasi yang disukai budaya terkait secara eksplisit, dan seberapa banyak orang diharapkan untuk mengambil dari konteks.

Memberi nama semua layanan dengan nama dari referensi budaya memang memberikan fleksibilitas, tetapi juga tidak memiliki kesederhanaan. Harus ada dari mulut ke mulut atau "pengetahuan suku" yang melengkapi nama - yaitu konteks layanan. Saya telah melihat situasi di mana misalnya ada server "fizzbuzz", atau layanan "marcopolo" yang tidak ada yang tahu apa yang mereka lakukan, tetapi mereka mendapatkan lalu lintas, jadi mereka harus melakukan sesuatu.

Saya orang konteks rendah, jadi saya cenderung memilih nama yang sederhana dan eksplisit yang memberikan konteks tentang tujuan server atau layanan. Saya juga menulis "kode self-documenting" di mana saya berhati-hati tentang penamaan dalam kode saya agar lebih mudah dibaca.

Tapi saya saat ini bekerja di toko konteks tinggi di mana semua layanan dinamai Transfomer. Mendesah. Setidaknya mereka menggunakan nama secara konsisten.

Jadi sepertinya lebih seperti nilai budaya, tetapi praktik teknis akan beradaptasi dengan preferensi budaya.

Konteks tinggi juga bisa lebih lucu, dan ada beberapa nilai di dalamnya.

rampok
sumber
3

Salah satu alasan untuk nama kode adalah kebingungan. Jika Anda membuat nama proyek menjadi tidak berarti, maka Anda dapat membicarakannya di depan umum tanpa ada orang lain yang memahami apa yang Anda diskusikan.

Demikian pula, jika Anda memberikan server Anda nama yang tidak berarti, maka tidak ada seorang pun kecuali pengguna yang berwenang yang akan tahu apa yang ada di dalamnya.

Simon B
sumber
2

Pertanyaan penting adalah: apa itu deskriptif? Jawaban lain telah melakukan pekerjaan yang luar biasa menggambarkan apa yang tidak deskriptif.

Mari kita tegaskan bahwa deskripsi berasal dari memanggil sesuatu dengan peran mereka, tujuan mereka . Dengan apa yang mereka lakukan . Misalnya, cukup jelas, apa yang dilakukan "pemotong". Sekarang bisa berupa kapak, laser atau pisau. Tidak masalah. Dan laser juga bisa menjadi "penunjuk" kapak juga bisa menjadi "dekorator" dan pisau juga bisa menjadi "penusuk".

Jadi, seperti yang telah ditunjukkan orang lain, hubungan antara sifat-sifat sesuatu dan tugas yang dijalankannya relatif longgar. Oleh karena itu OS yang menjadi bagian dari nama server tidak deskriptif , itu mengganggu tujuan sebenarnya.

Kecuali jika pekerjaan Anda adalah bagaimana komponen DoesXmencapai X, itu bukan urusan Anda. Jika itu adalah pekerjaan Anda, maka Anda langsung dihadapkan dengan itu.

Seperti yang ditunjukkan oleh rachet freak, terkadang sulit untuk menemukan nama deskriptif. Tetapi lebih sering daripada tidak, itu adalah tanda tidak mengerti apa yang dilakukan, yang harus Anda sebutkan. Sebelum memiliki pemahaman itu, Anda mungkin tidak perlu khawatir tentang bagaimana hal itu melakukan apa yang tidak Anda ketahui;)

back2dos
sumber
+1, tetapi bagaimana dengan menambahkan contoh? Anda dapat menggunakan contoh yang saya gunakan ketika mengomentari pertanyaan ( http-blog-db-failoveruntuk mesin yang meng-host database failover dari situs web hosting blog; pindah dari Linux ke Windows atau dari MongoDB ke CouchDB tidak akan mempengaruhi nama, begitu juga keputusan pemasaran. )
Arseni Mourzenko
2

Alasan pertama adalah bahwa itu bisa pendek dan mudah diingat. Jika Anda memikirkan berapa kali Anda akan mengatakan atau menulis nama proyek, Anda menghemat banyak waktu jika ada nama singkat yang diketahui dan dipahami semua orang.

Alasan kedua adalah bahwa hal itu membangun persahabatan. Jika tim dapat memilih nama, itu dapat memilih satu yang mereka sukai. Ini halus, tetapi ini meningkatkan moral tim ketika Anda mengerjakan proyek bernama Viper atau Gimley atau Boba atau Bugatti alih-alih proyek bernama 'Pembaruan Akuntansi Q3'. Saya punya teman yang bekerja dalam tim dengan sekelompok penggemar mobil. Ritual kickoff proyek favorit mereka adalah memilih mobil mana yang akan mereka gunakan sebagai nama kode proyek.

epotter
sumber
2

Saya selalu berpikir ini adalah sesuatu yang dilakukan terutama karena itu menghibur orang. Orang-orang dikondisikan oleh media untuk melampirkan nilai untuk menyelinap dalam gelap vs beroperasi dalam terang hari. Pada usia 5 kita memiliki "Agen Khusus Oso"; pada usia 15 itu James Bond. Kerahasiaan memberikan kesan penting bagi aktivitas orang yang biasanya duniawi (misalnya pemrograman komputer).

Terkait, seseorang membuat logo untuk "Longhorn" kembali ketika itu adalah nama kode Microsoft ( http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg ). Mengapa seseorang membuat logo untuk nama kode yang tidak dimaksudkan untuk menjadi bagian dari upaya pemasaran? Sekali lagi, orang melakukan hal semacam ini karena itu menghibur mereka. Bermain-main di Photoshop lebih mudah / lebih menyenangkan daripada benar-benar melakukan pekerjaan nyata.

pengguna1172763
sumber
1

mungkin ada sistem yang Anda tidak tahu.
Satu perusahaan tempat saya bekerja menggunakan nama pemenang hadiah Nobel untuk semua server mereka. Hadiah Nobel yang berbeda menunjukkan berbagai kategori server.
Server pengujian mungkin dinamai berdasarkan pemenang matematika, server basis data setelah pemenang literatur, server mail setelah pemenang obat, dll.
Untuk seseorang yang tidak terbiasa dengan konvensi penamaan, nama-nama itu tampak acak (terutama karena kebanyakan orang tidak tahu semua itu) ratusan pemenang hadiah Nobel selama beberapa dekade).

Saya telah menggunakan sistem yang sama di rumah, menamai komputer dengan jet tempur, server demi pembom, dan volume disk setelah gunung berapi.

Hal yang sama dapat dilakukan dengan perangkat lunak, nama versi produksi setelah pohon, versi beta setelah bunga, dll.

jwenting
sumber