Panduan Menulis Coding Standard PHP. Mungkin ini terdengar sepele bagi kalian yang baru dalam dunia programming tapi tentu akan lain lagi ceritanya bagi temen-temen yang sudah berkecimpung di dunia pemrograman selama bertahun-tahun apalagi mereka yang bekerja dalam bentuk tim.
Di dalam sebuah tim diperlukan banyak aturan atau kesepakatan agar tim dapat bekerja sama dengan baik, salah satunya adalah tentang Coding Standard. Dalam hal ini adalah Coding Standard PHP, dimana hal tersebut bertujuan untuk menyamakan frame berfikir antar para programer, mulai dari cara penamaan, penulisan, bahasa dan lain-lain.
Meskipun ONPHPID sendiri masih berkeyakinan bahwa aturan menulis kode php ini bukan sesuatu yang baku artinya satu tim dengan tim lain bisa saja berbeda, atau disesuaikan dengan kondisi atau mengikuti aturan di dalam tim sehingga menjadi dapat senjata rahasia dari sebuah tim tersebut.
Kenapa Coding Standard itu Penting diterapkan?
Pernah kalian mengalami kejadian dimana kita sudah capek-capek ngoding, kemudian kita liburan 1 hingga 2 minggu lalu pas kita buka.. duwaaar!!! “ini koding apa ya kemarin ?”
padahal kodingan kita sendiri. bagaimana jika kodingan ONPHPID dimana logic program, nama variable dan alurnya hanya ONPHPID yang tau.. apa kalian bisa memahami maksudnya ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$check_log = $dbconnect->prepare($sql_check); $check_log->bind_param('ss', $username, $password); $username = $_POST['username']; $password = md5($_POST['password']); $check_log->execute(); $check_log->store_result(); if ($check_log->num_rows == 1) { $check_log->bind_result($nama, $level_user, $id_user); while ($check_log->fetch()) { $_SESSION['user_login'] = $level_user; $_SESSION['sess_id'] = $id_user; $_SESSION['nama'] = $nama; } |
itu baru sebagain selengkapnya bisa di lihat disini.
Lalu Kode PHP yang kedua:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// start prepare $check_log = $dbconnect->prepare($sql_check); $check_log->bind_param('ss', $username, $password); $username = $_POST['username']; $password = md5($_POST['password']); $check_log->execute(); $check_log->store_result(); // check result, if valid username & password if ($check_log->num_rows == 1) { $check_log->bind_result($nama, $level_user, $id_user); // save user ID to session while ($check_log->fetch()) { $_SESSION['user_login'] = $level_user; $_SESSION['sess_id'] = $id_user; $_SESSION['nama'] = $nama; } |
inipun baru sebagian selengkapnya bisa dilihat disini.
Nah, bagaimana?
ONPHID yakin untuk kode yang pertama 1-3 minggu tidak kita buka atau kita tinggalkan pasti ketika kita buka kembali kita akan kebingungan dan bertanya ini kode apa? Atau ini cara kerjanya kemarin bagaimana ya?
Nah, jika kita yang buatnya saja bisa kebingungan, bagaimana dengan teman kita yang tidak tau sama sekali logika dan rencana program kita ini seperti apa lalu kemudian kita minta dia untuk mengembangkannya?
Maka solusi yang paling tepat adalah membacanya dari awal atau membuangnya dan membuat yang baru.
Ok.. itu adalah kisah lama yang dialami ONPHPID sebelum menggunaka coding standard PHP.
Setelah teman onphpid ini selesai mencaci dan memaki barulah dia dengan baik hati mengajarkan Coding style (gaya berkode) dengan menunjukan PSR (PHP Standards Recommendation) yang memungkinkan bisa bekerja sama dengan banyak orang.
APA ITU PSR?
PSR atau PHP Standars Recommendation hanya sebuah label dari sebuah group yang bernama FIG (Framework Interoperability Group) mereka sebuah group yang secara tidak langsung ikut dalam pengembangan berbagai Framework yang berdasarkan voting dari para member.
Tujuan dari FIG sendiri adalah untuk membuat standar penulisan progam sehingga para developer memiliki Gaya berkoding yang sama.
Pada saat artikel ini onphpid tulis FIG telah menulis PSR yang dimulai dari 1, 2, 3, 4, 6, 7.
- PSR-1 : Basic Coding Standard
- PSR-2 : Coding Style Guide
- PSR-3 : Logger Interface
- PSR-4 : Autoloading Standard
- PSR-6 : Caching Interface
- PSR-7 : HTTP Message Interface
Meski sudah ada 6 list diatas kita hanya akan membahas PSR-1 dan PSR-2 saja sebagai dasar kita bercoding.
PSR 1 : Basic Coding Standard
Sebagai Dasar Pengkodean Standar pada PSR 1 terdapat beberapa aturan sebagai berikut:
- File HARUS menggunakan Tags PHP
<?php ?>
atau<?= ?>
saja.
jangan Menggunakan variasi tag yang lain. - File hanya menggunakan
UTF-8
dan tidak menggunakan BOM (byte-order mark). - File harus mendeklarasikan (menjelaskan) Class, functions, constantas dan lain-lain atau menjelaskan hasil outputnya atau pengaruhnya terhadap aplikasi yang dibangun dan tidak disarankan mencampur keduanya dalam satu file. Maksudnya adalah file berisi class sendiri, berisi functions sendiri, berisi include/require sendiri, berisi print/echo sendiri atau berisi suatu logic juga sendiri.
- Penamaan Class HARUS menggunakan
StudlyCaps
.
StudlyCaps adalah format penulisan yang huruf kapital dan huruf kecil tidak beraturan seperti STudlycApS, stuDLYCapS - Penamaan Constanta HARUS menggunakan huruf kapital dan garis bawah sebagai pengganti spasi.
- Penamaan Method HARUS dengan
cemalCase
.
cemalCase adalah format penulisan tanpa sepasi sebagai pemisah (jika lebih dari 1 kata) diganti dengan mengubah setiap huruf awal dalam kata menjadi kapital CamelCase, PowerPoint, WordPress.
Biar lebih mudah langsung ke contoh aja…
Penamaan Class HARUS menggunakan StudlyCaps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class NameClass { //body class } class Anotherclass { //body class } class AnOtheRClass { //body class } |
Penamaan Constanta
1 2 3 4 5 |
class ClassName { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; } |
Penamaan Method
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class myClass { // method function dataAngka() { //body method } function camelCase() { // body method } } |
PSR-2: Coding Style Guide
Pada PSR yang kedua ini kita lebih difokuskan pada kerapian kode sehingga mudah dibaca baik oleh diri kita sendiri atau orang lain.
- Mengikuti Aturan coding php PSR-1.
- indent (penulisan yang menjorok kedalam layaknya paragraf) menggunakan 4 (empat) spasi bukan Tab.
- Menulis kode jangan telalu panjang. usahakan batas maksimal sekitar 120 karakter atau lebih baik kurang dari 80 karakter.
- Memberi garis baru (blank line) setelah mendeklarasikan namespace atau use (atau banyak use).
- Penulisan Kurung buka “{” pada sebuah Classes dan Methods HARUS diberi garis baru (new line) dan kurung tutup “}” juga diberikan satu garis baru.
- Visibility (private, protected, public) HARUS ke semua Propertis dan method, abstract dan final HARUS dideklarasikan sebelum Visibility, dan static HARUS dideklarasikan sesudah Visibility.
- Control Structure Keyword HARUS diberi spasi sebelum kurung buka “{“.
- Kurung Buka “{” untuk Control Structure ditulis pada garis yang sama dan untuk penutup “}” ditulis disetelah body.
- Setiap Arguments pada method HARUS diberi satu spasi setelah koma dan argumen yang memiliki nilai default SEBAIKNYA ditaruh di deret paling belakang.
1234567function argument($arg1, $arg2, $arg3 = array()){//body function}//atauargumen($arg1, $arg2);
Oke langsung saja kecontoh lagi…
Dekalarsi Namespace dan Use
1 2 3 4 5 6 7 8 |
<?php namespace Vendor\Package; use FooInterface; use BarClass as Bar; use OtherVendor\OtherPackage\BazClass; // kode lain |
Penulisan Class dan Method dan kondisi kode yang terlalu panjang
1 2 3 4 5 6 7 |
class ClassName extends ParentClass implements \ArrayAccess, \Countable, \Serializable { // constants, properties, methods } |
Penulisan Visibility
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Visibility class ClassName { public $foo = null; // visibilty pada properti // visibilty pada method public function fooBarBaz($arg1, &$arg2, $arg3 = []) { // method body } } // abstract, final, and static abstract class ClassName { protected static $foo; abstract protected function zim(); final public static function bar() { // method body } } |
Control Structure
If, elseif, else
1 2 3 4 5 6 7 |
if ($expr1) { // if body } elseif ($expr2) { // elseif body } else { // else body; } |
Switch Case
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
switch ($expr) { case 0: echo 'First case, with a break'; break; case 1: echo 'Second case, which falls through'; // no break case 2: case 3: case 4: echo 'Third case, return instead of break'; return; default: echo 'Default case'; break; } |
while dan do while
1 2 3 4 5 6 7 8 9 |
// while while ($expr) { // structure body } // do while do { // structure body; } while ($expr); |
for dan foreach
1 2 3 4 5 6 7 8 9 |
// for for ($i = 0; $i < 10; $i++) { // for body } // foreach foreach ($iterable as $key => $value) { // foreach body } |
try and catch
1 2 3 4 5 6 7 8 |
//try catch try { // try body } catch (FirstExceptionType $e) { // catch body } catch (OtherExceptionType $e) { // catch body } |
Kurang Lebih itu yang bisa ONPHPID share kepada kalian tentang aturan menulis kode php agar kode kita bisa dibaca oleh orang lain dan jangan lupa untuk menambahkan komentar atau note pada kode yang kita buat agar lebih mudah dipahami maksud dan tujuan dari kode tersebut.
Sekian apabila ada pertanyaan atau koreksi bisa memanfaatkan kolom komentar dibawah ini. demikian sedikit uraian tentang Coding Standard PHP yang bisa ONPHPID sampaikan semoga bermanfaat.
Sumber Referensi:
- http://www.php-fig.org
- https://www.w3.org/International/questions/qa-byte-order-mark.en
- http://pear.php.net/manual/en/standards.sample.php
- http://php.net/manual/en/language.control-structures.php