Ada berbagai standar pengkodean yang diberlakukan pada perusahaan perangkat lunak yang memiliki tujuan meningkatkan keandalan kode, portabilitas, dan, yang paling penting, keterbacaan dalam kode yang ditulis bersama oleh pengembang yang berbeda.
Dua contoh penting adalah MISRA C , dan standar C ++ yang dikembangkan untuk proyek JSF .
Ini biasanya dalam bentuk berikut, setelah dengan hati-hati menentukan arti kata "harus", "akan", "harus", "mungkin", dll.
Contoh:
Aturan 50: Variabel titik apung tidak boleh diuji untuk persamaan atau ketidaksetaraan yang tepat.
Dasar Pemikiran: Karena angka floating point dikenakan kesalahan pembulatan dan pemotongan, kesetaraan yang tepat mungkin tidak tercapai, bahkan ketika diharapkan.
Standar pengkodean ini menimbulkan batasan, biasanya pada kode yang legal dari sudut pandang kompiler, tetapi berbahaya atau tidak dapat dibaca, dan karenanya "dianggap berbahaya".
Sekarang mari kita penyalahgunaan ini!
Anda diterima sebagai anggota komite standardisasi kecil di perusahaan Anda, yang dimaksudkan untuk merancang standar pengkodean baru yang harus digunakan oleh setiap pengembang di perusahaan. Tanpa diketahui orang lain, Anda diam-diam mempekerjakan organisasi jahat dan memiliki misi untuk menyabot perusahaan. Anda harus mengusulkan satu atau lebih entri ke standar pengkodean yang nantinya akan menghambat pengembang. Namun, Anda harus berhati-hati untuk tidak membuat ini segera jelas, jika tidak Anda berisiko itu tidak diterima ke dalam standar.
Dengan kata lain, Anda harus memperkenalkan aturan ke standar pengkodean yang terlihat sah dan memiliki peluang bagus untuk diterima oleh anggota komite lainnya. Setelah proyek dimulai dan banyak jam kerja diinvestasikan dalam kode, Anda harus dapat menyalahgunakan aturan ini (misalnya, dengan teknis, atau dengan sangatinterpretasi literal) untuk menandai kode yang dinyatakan normal dan berkualitas baik sebagai melanggar standar. Jadi mereka harus berusaha keras untuk mendesain ulang, dan aturan akan menghalangi mereka sejak saat ini, tetapi karena aturan aktif untuk beberapa waktu sekarang, momentum murni akan menjaga peran ini tetap hidup, dan karena ada konflik yang signifikan kepentingan antara berbagai tingkat manajemen, manajer lain mungkin akan menjaga aturan hidup (mereka akan bodoh untuk mengakui kesalahan mereka!), karena itu menghambat perusahaan! Mwahahahahaaa!
Mencetak gol
Jawaban dengan suara tertinggi setelah sekitar 2 minggu sejak entri pertama yang valid menang. Saya punya ide untuk jawaban yang baik, tetapi saya hanya akan mempostingnya beberapa hari kemudian, karena orang lain mungkin akan datang ke ide yang sama, dan saya tidak ingin merampok mereka dari kesenangan. Tentu saja, jawaban saya sendiri tidak akan diterima di atas yang lain, apa pun nilainya.
Pemilih didorong untuk mencetak jawaban berdasarkan seberapa baik celah tersembunyi, dan seberapa frustasi para pengembang.
Peraturan dan ketentuan
- Aturan atau aturan harus terlihat ditulis secara profesional, seperti pada contoh di atas
- Aturan harus terlihat asli (sehingga hal-hal seperti "semua variabel harus mengandung setidaknya satu garis bawah, satu huruf besar, satu huruf kecil dan dua angka" tidak diterima. Mereka memang akan menghambat pengembang, tetapi kemungkinan besar tidak akan diterima oleh komite) dan jika pahala mereka tidak segera jelas, Anda harus memberikan alasan yang baik.
- Anda harus dapat menemukan cara untuk menggunakan / menyalahgunakan aturan Anda untuk menyabot pengembang nanti. Anda dapat menyalahgunakan ambiguitas dalam aturan lain, atau Anda dapat menggunakan beberapa aturan yang tidak berbahaya sendiri, tetapi jahat sekali digabungkan!
- Anda harus memposting penjelasan dalam tag spoiler di akhir posting Anda tentang bagaimana Anda bisa menyalahgunakan aturan
- Bahasa yang digunakan tidak boleh bahasa esoterik. Bahasa yang banyak digunakan dalam proyek nyata harus dipilih, jadi bahasa dengan sintaksis mirip-C (bukan hal-hal seperti Golfscript) lebih disukai.
Jawaban:
C / C ++
Jika Anda ingin menjadi lebih jahat, tambahkan yang berikut ini:
Bagaimana bisa disalahgunakan:
Ambil program sederhana berikut yang akan menambahkan 10 elemen pertama dari sebuah array. Kode ini tidak akan sesuai standar.
sumber
0
adalah konstanta oktal? Saya kira itu karena itu dimulai dengan karakter0
. Itu akan memperkuat argumen pedant hipotetis Anda.Python
Aturan 1: Semua kode harus byte-dikompilasi menggunakan
-OO
flag, yang mengoptimalkan bytecode. Kami ingin bytecode yang dioptimalkan untuk ukuran dan efisiensi!Aturan 2: Tes harus dijalankan terhadap "artefak" kode yang sama yang akan dimasukkan ke dalam produksi. Auditor kami memerlukan ini.
sumber
help()
di REPL, dan pengujian REPL informal masih sedang diuji.unittest
modul atau, yang mengimplementasikan pernyataannya sendiri tidak tergantung pada__debug__
bendera. Namun, dokumen tidak akan berjalan diam-diam. Sneaky!Ini untuk proyek Node.JS.
Bagaimana bisa disalahgunakan:
sumber
JavaScript (ECMAScript)
(Sintaks kutipan tata bahasa itu sendiri [bukan yang didefinisikannya] sesuai dengan spesifikasi ECMAScript. Tentu saja ini akan didefinisikan dengan lebih ketat pada titik lain dari spesifikasi hipotetis.)
Trik-nya
Program berikut tidak sesuai:
sumber
C #
Mengapa
sumber
JAWA / SPRING
Trik-nya
sumber
Pengkodean situs web
Bagaimana bisa disalahgunakan:
sumber
Operator Bitwise JavaScript
Bagaimana bisa disalahgunakan:
sumber
x = (x<<10) + (x<<8) + (x<<5) + (x<<4) + (x<<3) + (x)
lebih rendah dalam segala hal (bahkan mungkin kecepatan)x *= 1337
, dan mengganti pembagian dengan non-kekuatan dua dengan jumlah bithifts bahkan lebih buruk.JavaScript (ECMAScript)
Trik-nya
sumber