Pemrograman Spartan ... Apa gunanya? [Tutup]

8

Kami dipaksa untuk menggunakan pemrograman Spartan pada sebuah proyek, yang membuat semua orang kecewa. Jadi saya mengerti, itu membuat metode sangat singkat dan menangani kasus sederhana terlebih dahulu. Tetapi apakah itu benar-benar sepadan dengan harga kode yang terlihat seperti sesuatu dari kontes Kode C yang dikaburkan?

Bisakah Anda melihatnya berguna untuk sesuatu?

EpsilonVector
sumber
3
Apa itu "pemrograman sederhana"? Bisakah Anda memberikan tautan untuk kami orang-orang bodoh?
DarenW
Anda "dipaksa menggunakan pemrograman Spartan pada proyek" ?! Bagaimana cara kerjanya? Maksud saya, saya dapat (sampai titik tertentu) membayangkan dipaksa untuk menggunakan (editor / VSC / ...) pada suatu proyek, tetapi bagaimana seseorang dapat dipaksa untuk menggunakan pendekatan tertentu?
Benteng
16
Ini SPARTA!
Dean Harding
2
Jika Anda berakhir dengan kode yang harus dimasukkan ke dalam kontes yang dikaburkan, meskipun ada eufemisme, Anda salah melakukannya.
Tim Post
3
@EpsilonVector: Ah, jadi ini proyek sekolah, bukan sesuatu di "dunia nyata"? Maka saya hanya akan menyedotnya dan melakukan pekerjaan. Mungkin profesor berusaha mengajarkan kepada Anda bahwa kepatuhan buta terhadap aturan dogmatis biasanya merusak kemampuan Anda untuk bekerja secara efisien. Atau mungkin dia hanya sadis ... Saya tahu banyak profesor yang ;-)
Dean Harding

Jawaban:

24

Banyak penyewa pemrograman Spartan sepertinya latihan yang baik bagi saya. Misalnya, menjaga metode tetap pendek, meminimalkan ruang lingkup variabel, meminimalkan jumlah parameter untuk suatu metode, atau metode ke kelas, dll. Ini semua adalah hal-hal yang baik dan persis apa yang Anda perjuangkan.

Tapi kemudian ada hal-hal seperti meminimalkan jumlah karakter , meminimalkan jumlah token , ternarisasi (serius?), Dll yang benar-benar tidak masuk akal.

Saya pikir masalah utama saya dengan itu dicontohkan oleh kutipan ini :

Tapi, pemrograman sederhana lebih dari sekedar gaya pengkodean teknis, yang memiliki prinsip tunggal yang mendasari, menyatukan --- minimalisme dan kesederhanaan dibawa ke ekstrem.

Apa pun yang "dianggap ekstrem" membunyikan bel alarm untuk saya.

Dean Harding
sumber
Adakah yang mengatakan "pemrograman"? : p
CesarGon
ternarisasi adalah menarik, dalam kasus pertama yang dikutip dalam makalah terkait, itu ide yang baik, dalam yang kedua ... hmmm ok, saya akan membiarkan itu pergi, tetapi untuk mengambil ternarisasi ke ekstrem konyol (misalnya tersarang bersarang) adalah, yah , konyol.
ocodo
@Slomojo: WTF yang sebenarnya pada halaman itu adalah bagian tentang "ternarisasi otomatis" ...
Dean Harding
regex itu cukup mengagumkan, selama Anda meninjau setiap ternarisasi, saya tidak melihat masalah besar dengannya. Selama masih bisa dibaca, itu tidak masalah. - Seperti yang Anda katakan, itu ekstrem (atau mungkin lebih tepatnya, ekstremis) yang akan menjadi masalah.
ocodo
+1 untuk Apa pun yang "dianggap ekstrem" membunyikan bel alarm untuk saya.
Sarawut Positwinyu
4

Nah, itu tampak familier. Bahkan meminimalkan pada token, meskipun tidak dibawa ke ekstrem. Saya lebih suka menggunakan fname daripada nama file misalnya, keluar untuk output, x untuk input data, n untuk jumlah, l untuk panjang dan seterusnya. lx akan panjang x, panjang y, ... Anda mendapatkan maksud.

Plus, karena saya sering memanipulasi dataset besar dalam aplikasi ilmiah, saya sering menggunakan fasilitas indeks dalam R. Ketika saya menuliskan semua indeks itu, kode itu menyakitkan mata saya. Jadi indeks menjadi id, atau bahkan hanya saya.

Bahkan lebih, struktur loop spesifik dalam R (keluarga yang berlaku) sering menuntut deklarasi fungsi dalam panggilan yang berlaku. Dalam kasus-kasus itu saya selalu menggunakan x, y, z, ... Fungsi-fungsi ini sering satu atau dua baris, jadi jelas dari mana asalnya, dan tidak mengacaukan layar.

Itu bukan hal yang buruk, selama Anda memiliki beberapa konvensi penamaan yang koheren melalui kode lengkap, dan Anda memberikan komentar untuk menjelaskan nama variabel yang lebih tidak jelas. Pada akhirnya, itu membuat kode lebih mudah bagi saya daripada kereta unta panjang yang terpincang-pincang di layar.

Joris Meys
sumber
2
Saya setuju bahwa variabel yang lebih pendek seringkali lebih mudah dibaca daripada nama variabel yang sangat panjang. Seperti yang saya katakan dalam jawaban saya, 'Apa pun yang "dianggap ekstrem" membunyikan bel alarm untuk saya' dan itu berlaku dua arah. Tujuan utama Anda adalah untuk memaksimalkan keterbacaan, terlepas dari jumlah karakter tertentu.
Dean Harding
1
Anda mengatakan "..it membuat kode lebih siap untuk saya ..."; Saya menekankan "pada saya". Ketika kode Anda digunakan dan dikelola oleh selusin orang lain, maka variabel dan logika Anda harus masuk akal bagi mereka juga bagi Anda . Dalam kasus itu, konvensi dan singkatan Anda mungkin tidak begitu jelas. :-)
CesarGon
@Cesargon: Ini masalah mendokumentasikan konvensi.
Joris Meys
@Dean saya setuju sepenuhnya tentang itu. Namun, saya melihat kecenderungan ekstrim lain, terutama dalam beberapa bahasa pemrograman tertentu. Jave datang ke pikiran ...
Joris Meys
2

Berikut ini adalah artikel yang membahas manfaat pemrograman spartan

http://ssdl-wiki.cs.technion.ac.il/wiki/index.php/SendAnEmail_case_study

Demian Kasier
sumber
3
Ini lelucon, kan? Meminimalkan panjang nama variabel, meminimalkan jumlah variabel ... ya ampun, mengingatkan saya pada hari MSX saya!
CesarGon
Saya tidak menyetujuinya :) tetapi artikel itu menjelaskannya lebih baik daripada yang saya bisa.
Demian Kasier
Saya tahu saya tahu.
CesarGon
1
Tidakkah hal-hal yang ditunjukkan dalam artikel ini termasuk dalam setiap tindakan refactoring? Saya tidak tahu bahwa ini disebut "Pemrograman Spartan", tetapi umumnya saya mencoba untuk peduli tentang hal-hal ini ketika saya menulis kode (terlepas dari panjang nama variabel, tetapi saya belum menemukan masalah itu dalam artikel)
Felix Dombek
Ya saya kenal dengan tautan itu, kecuali bahwa tautan itu tidak memuat ketika kami mencoba mengaksesnya beberapa waktu yang lalu ... OK jadi ini lebih tidak gila daripada anggota tim saya membuatnya terdengar, tapi saya masih memihak CaesarGon untuk yang satu ini ...
EpsilonVector
2

Ini adalah aksentuasi Kekompakan dari Cs.

  1. Ketepatan
  2. Kelengkapan
  3. Kekompakan

Tidak ada yang peduli dengan kode Anda jika itu tidak benar.

Jika kode Anda tidak lengkap (menangani setiap kasus), maka ada yang bug.

Jika tidak kompak daripada Anda membuang-buang memori atau siklus (samping kompilasi optimasi)

Perhatikan bahwa pesanan di sini adalah yang terpenting. Program paling ringkas jarang benar. MISALNYA

void main() {
 return 1; 
}
EnabrenTane
sumber
Anda bisa membuatnya lebih ringkas jika Anda mau. void main(){return 1;}
Aaron Franke
0

Wow, sebenarnya saya memprogram seperti ini, tidak tahu ada nama. Saya akan mengatakan itu manfaat keterbacaan tetapi lebih dalam cara spasial ... yang berarti Anda tidak tersesat dalam sup kode bahkan jika Anda memiliki beberapa baris yang agak sulit dibaca.

Namun, saya akan mengatakan bahwa ketika Anda terbiasa dengan konstruksi tertentu Anda menemukan jalan Anda lebih mudah dalam waktu yang lebih singkat daripada di awal.

dukeofgaming
sumber
1
Ada versi baru dari proyek spartznizer, di sini: github.com/SpartanRefactoring/Spartanizer/wiki/Tutorial
Yossi Gil