Bergantung pada situasi spesifik, pengembang rata-rata sering kali kurang efisien 10% hingga 20% dibandingkan pengembang hebat. Pengembang yang baik lebih efisien karena mereka memiliki pengalaman luas dan kebiasaan pemrograman yang baik. Kebiasaan pemrograman yang buruk akan mempengaruhi efisiensi. Artikel ini membantu Anda menjadi programmer yang lebih baik dengan menunjukkan beberapa kebiasaan pemrograman yang baik.
Kebiasaan pemrograman yang baik ini tidak hanya meningkatkan efisiensi, namun juga memungkinkan Anda menulis kode yang mudah dipelihara sepanjang siklus hidup aplikasi Anda. Kode yang Anda tulis mungkin memerlukan banyak pemeliharaan; pemeliharaan aplikasi memerlukan biaya yang besar. Mengembangkan kebiasaan pemrograman yang baik dapat meningkatkan kualitas desain (seperti modularitas), membuat kode lebih mudah dipahami dan karenanya lebih mudah dipelihara, sekaligus mengurangi biaya pemeliharaan.
Kebiasaan pemrograman yang buruk akan menyebabkan cacat kode, sehingga sulit untuk dipelihara dan dimodifikasi, dan kemungkinan besar menimbulkan cacat lain saat memodifikasi. Berikut ini adalah 5 kebiasaan pemrograman yang baik yang dapat membantu kode PHP menghindari kesalahan ini:
◆Gunakan penamaan yang baik.
◆Bagi menjadi beberapa bagian yang lebih kecil.
◆Tambahkan komentar pada kode.
◆Menangani kondisi kesalahan.
◆Jangan gunakan salin dan tempel.
Kebiasaan ini dirinci di bawah ini:
Gunakan Penamaan yang Baik
Menggunakan penamaan yang baik adalah kebiasaan pemrograman yang paling penting karena nama yang deskriptif membuat kode lebih mudah dibaca dan dipahami. Apakah kode tersebut mudah dipahami bergantung pada apakah kode tersebut dapat dipertahankan di masa mendatang. Bahkan jika kode tersebut tidak diberi komentar, itu akan sangat memudahkan perubahan di masa depan jika mudah dimengerti. Tujuan dari kebiasaan ini adalah membuat kode yang Anda tulis mudah dibaca dan dipahami seperti sebuah buku.
Kebiasaan Buruk: Nama yang Tidak Jelas atau Tidak Berarti
Kode pada Listing 1 berisi nama variabel yang terlalu pendek, singkatan yang tidak terbaca, dan nama metode yang tidak mencerminkan fungsionalitas metode. Jika nama metode memberi kesan bahwa metode tersebut seharusnya melakukan satu hal, namun nyatanya melakukan hal lain, hal ini akan menimbulkan masalah serius karena akan menyesatkan.
Listing 1. Kebiasaan buruk: nama yang tidak jelas atau tidak berarti
<?php
function getNBDay($d){
beralih($d) {
kasus 5:
kasus 6:
kasus 7:
kembali 1;
bawaan:
kembali ($d + 1);
}
}
$hari = 5;
$hari berikutnya = getNBDay($hari);
echo("Hari berikutnya adalah: " .$Hari berikutnya . "n")
;
Praktik yang Baik: Nama yang Deskriptif dan Ringkas
Kode pada Listing 2 menunjukkan praktik pemrograman yang baik. Nama metode baru ini sangat deskriptif dan mencerminkan tujuan metode tersebut. Begitu pula dengan perubahan nama variabel yang lebih deskriptif. Satu-satunya variabel yang terpendek adalah $i, yang dalam daftar ini adalah variabel loop. Meskipun banyak orang tidak menyukai penggunaan nama yang terlalu pendek, namun dapat diterima (dan bahkan bermanfaat) untuk menggunakannya dalam variabel loop karena jelas menunjukkan fungsi kode.
Listing 2. Praktik yang baik: nama yang deskriptif dan ringkas
<?php
mendefinisikan('SENIN', 1);
mendefinisikan('SELAMAT', 2);
mendefinisikan ('Rabu', 3);
mendefinisikan ('Kamis', 4);
mendefinisikan('JUMAT', 5);
mendefinisikan('SABTU', 6);
mendefinisikan('MINGGU', 7);
/*
*
* @param $hari dalam seminggu
* @return int Hari dalam seminggu, dengan 1 adalah hari Senin dan seterusnya.
*/
fungsi findNextBusinessDay($dayOfWeek){
$HariBisnis Berikutnya = $hariMinggu;
saklar($hari dalam seminggu) {
kasus JUMAT:
kasus SABTU:
kasus MINGGU:
$HariBisnis berikutnya = SENIN;
merusak;
bawaan:
$HariBisnis berikutnya += 1;
merusak;
}
kembalikan $HariBisnis Berikutnya;
}
$hari = JUMAT;
$nextBusDay = findNextBusinessDay($hari);
echo("Hari berikutnya adalah:" .$nextBusDay . "n");
?>
Kami mendorong Anda untuk memecah kondisi besar menjadi sebuah metode, dan kemudian memberi nama metode tersebut dengan nama yang menggambarkan kondisi tersebut. Teknik ini dapat meningkatkan keterbacaan kode dan membuat kondisi menjadi konkret sehingga dapat diekstraksi dan bahkan digunakan kembali. Memperbarui metode juga mudah jika kondisi berubah. Karena suatu metode memiliki nama yang bermakna, maka metode tersebut mencerminkan tujuan kode dan membuat kode lebih mudah dibaca.
dalam bagian-bagian yang lebih kecil
sebelum melanjutkan ke pemrograman. Jika Anda terus memprogram sambil menyelesaikan masalah yang mendesak, fungsinya akan menjadi semakin lama. Dalam jangka panjang, hal ini tidak menjadi masalah, namun Anda harus ingat untuk kembali dan memfaktorkannya kembali menjadi bagian-bagian yang lebih kecil.
Memfaktorkan ulang adalah ide yang bagus, tetapi Anda harus membiasakan menulis kode yang lebih pendek dan fokus. Metode singkat dapat dibaca dalam satu jendela dan mudah dipahami. Jika suatu metode terlalu panjang untuk dibaca dalam satu jendela, maka akan sulit untuk diikuti karena Anda tidak dapat dengan cepat mengikuti keseluruhan ide dari awal sampai akhir.
Saat membangun metode, Anda harus membiasakan setiap metode melakukan satu hal saja. Ini merupakan kebiasaan yang baik karena: pertama, jika suatu metode hanya melakukan satu hal, maka kemungkinan besar metode tersebut akan digunakan kembali; kedua, metode tersebut mudah untuk diuji; ketiga, metode tersebut mudah untuk dipahami dan diubah.
Kebiasaan Buruk: Metode yang Terlalu Panjang (Melakukan Terlalu Banyak Hal)
Listing 3 menunjukkan fungsi yang sangat panjang dan memiliki banyak masalah. Ia melakukan banyak hal, jadi tidak cukup kompak. Juga lebih mudah untuk membaca, men-debug, dan menguji. Hal-hal yang dilakukannya termasuk mengulangi file, membuat daftar, memberikan nilai ke setiap objek, melakukan perhitungan, dan banyak lagi.
Listing 3. Kebiasaan buruk: fungsi terlalu panjang
<?php
function writeRssFeed($user)
{
//Dapatkan informasi koneksi DB
// mencari preferensi pengguna...
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
ATAU mati(mysql_error());
// Permintaan
$perfsQuery = sprintf("PILIH max_stories DARI user_perfs WHERE pengguna= '%s'",
mysql_real_escape_string($pengguna));
$hasil = mysql_query($query, $link);
$max_stories = 25; // defaultnya adalah 25;
if ($baris = mysql_fetch_assoc($hasil)) {
$max_stories = $baris['max_stories'];
}
// ambil dataku
$perfsQuery = sprintf("PILIH * DARI cerita WHERE post_date = '%s'",
mysql_real_escape_string());
$hasil = mysql_query($query, $link);
$umpan = "<rss version="2.0">" .
"<saluran>" .
"<title>Umpan Hebat Saya</title>" .
"<tautan> http://www.example.com/feed.xml </link>" .
"<deskripsi>Umpan terbaik di dunia</deskripsi>" .
"<bahasa>en-us</bahasa>" .
"<pubDate>Sel, 20 Okt 2008 10:00:00 GMT</pubDate>" .
"<lastBuildDate>Sel, 20 Okt 2008 10:00:00 GMT</lastBuildDate>" .
"<docs> http://www.example.com/rss </docs>" .
"<generator>Generator Umpan Saya</generator>" .
"<managingEditor> [email protected] </managingEditor>" .
"<webMaster> [email protected] </webMaster>" .
"<ttl>5</ttl>";
// membuat umpan...
while ($baris = mysql_fetch_assoc($hasil)) {
$judul = $baris['judul'];
$tautan = $baris['tautan'];
$deskripsi = $baris['deskripsi'];
$tanggal = $baris['tanggal'];
$guid = $baris['guid'];
$umpan .= "<item>";
$umpan .= "<judul>" $judul .
$umpan .= "<link>" $link .
$umpan .= "<deskripsi> " $deskripsi .
$umpan .= "<pubDate>" $tanggal .
$umpan .= "<guid>" $guid .
$umpan .= "</item>";
}
$feed .= "</rss";
// menulis feed ke server...
echo($feed);
?
>Jika Anda menulis beberapa metode lagi seperti ini, pemeliharaan akan menjadi masalah nyata.
Kebiasaan Baik: Daftar Metode yang Dapat Dikelola dan Berfungsi Khusus
4 Tulis ulang metode asli menjadi metode yang lebih ringkas dan mudah dibaca. Dalam contoh ini, metode panjang dipecah menjadi beberapa metode pendek, dan masing-masing metode pendek bertanggung jawab atas satu hal. Kode tersebut sangat membantu untuk penggunaan kembali dan pengujian di masa mendatang.
Listing 4. Praktik yang baik: pendekatan khusus fungsi yang mudah dikelola
<?php
function createRssHeader()
{
kembalikan "<rss version="2.0">" .
"<saluran>" .
"<title>Umpan Hebat Saya</title>" .
"<link> http://www.example.com/feed.xml </link>" .
"<deskripsi>Umpan terbaik di dunia</deskripsi>" .
"<bahasa>en-us</bahasa>" .
"<pubDate>Sel, 20 Okt 2008 10:00:00 GMT</pubDate>" .
"<lastBuildDate>Sel, 20 Okt 2008 10:00:00 GMT</lastBuildDate>" .
"<docs> http://www.example.com/rss </docs>" .
"<generator>Generator Umpan Saya</generator>" .
"<managingEditor> [email protected] </managingEditor>" .
"<webMaster> [email protected] </webMaster>" .
"<ttl>5</ttl>";
}
fungsi buatRssFooter()
{
kembalikan "</saluran></rss>";
}
fungsi createRssItem($judul, $link, $desc, $tanggal, $guid)
{
$barang .= "<barang>";
$barang .= "<judul>" $judul .
$item .= "<tautan>" $tautan .
$item .= "<deskripsi> " $deskripsi .
$item .= "<pubDate>" $tanggal .
$barang .= "<guid>" $guid .
$barang .= "</barang>";
kembalikan $barang;
}
fungsi getUserMaxStories($db_link, $default)
{
$perfsQuery = sprintf("PILIH max_stories DARI user_perfs WHERE pengguna= '%s'",
mysql_real_escape_string($pengguna));
$hasil = mysql_query($perfsQuery, $db_link);
$max_stories = $standar;
if ($baris = mysql_fetch_assoc($hasil)) {
$max_stories = $baris['max_stories'];
}
kembalikan $max_stories;
}
fungsi tulisRssFeed($pengguna)
{
//Dapatkan informasi koneksi DB
$pengaturan = parse_ini_file("rss_server.ini");
// mencari preferensi pengguna...
$link = mysql_connect($pengaturan['db_host'], $pengaturan['pengguna'],
$pengaturan['kata sandi']) ATAU mati(mysql_error());
$max_stories = getUserMaxStories($link, 25);
// ambil dataku
$newsQuery = sprintf("PILIH * DARI cerita WHERE post_date = '%s'",
mysql_real_escape_string(waktu()));
$hasil = mysql_query($newsQuery, $link);
$umpan = buatRssHeader();
$i = 0;
// membuat umpan...
while ($baris = mysql_fetch_assoc($hasil)) {
jika ($i < $max_stories) {
$judul = $baris['judul'];
$tautan = $baris['tautan'];
$deskripsi = $baris['deskripsi'];
$tanggal = $baris['tanggal'];
$guid = $baris['guid'];
$feed .= createRssItem($title, $link, $description, $date, $guid);
$i++;
} kalau tidak {
merusak;
}
}
mysql_close($link);
$feed .= createRssFooter();
// menulis feed ke server...
echo($umpan);
}
?> Ada juga keterbatasan dalam membagi metode panjang menjadi metode pendek, dan pemisahan yang berlebihan akan menjadi kontraproduktif. Oleh karena itu, jangan menyalahgunakan kebiasaan baik ini. Memecah kode menjadi potongan-potongan besar dapat membuat pembacaan menjadi sama sulitnya dengan tidak memecah kode yang panjang.
Menambahkan Komentar ke Kode Anda
Menambahkan komentar yang baik ke kode Anda terkadang terasa sama sulitnya dengan menulis kode. Tidak mudah untuk mengetahui apa yang harus diberi anotasi karena kita sering kali cenderung memberi anotasi pada apa yang sedang dilakukan kode. Merupakan ide bagus untuk mengomentari tujuan kode Anda. Dalam blok header fungsi yang kurang jelas, pembaca diberitahu tentang input dan output metode, serta tujuan awal metode tersebut.
Mengomentari apa yang sedang dilakukan kode merupakan hal yang lumrah, namun hal ini tidak diperlukan. Jika kodenya rumit dan Anda harus mengomentari apa yang sedang dilakukannya, ini menyarankan Anda untuk menulis ulang kode tersebut agar lebih mudah dipahami. Pelajari cara menggunakan nama bagus dan metode yang lebih pendek untuk membuat kode Anda lebih mudah dibaca tanpa memberikan komentar yang menjelaskan tujuannya.
Kebiasaan Buruk: Fungsi Berkomentar Berlebihan atau Kurang
Komentar dalam Listing 5 hanya memberi tahu pembaca apa yang dilakukan kode—yaitu mengulangi perulangan atau menambahkan angka. Namun ia mengabaikan alasan ia melakukan tugasnya saat ini. Hal ini membuat orang-orang mempertahankan kode tersebut tanpa mengetahui apakah kode tersebut dapat diubah dengan aman (tanpa menimbulkan cacat baru).
Listing 5. Kebiasaan buruk: terlalu banyak atau tidak cukup fungsi komentar
<?
Pesan Hasil kelas
php
{
pribadi $ tingkat keparahan;
$pesan pribadi;
fungsi publik __construct($sev, $msg)
{
$ini->keparahan = $sev;
$ini->pesan = $pesan;
}
fungsi publik getSeverity()
{
kembalikan $ini->keparahan;
}
fungsi publik setSeverity($severity)
{
$ini->keparahan = $keparahan;
}
fungsi publik getMessage()
{
kembalikan $ini->pesan;
}
fungsi publik setMessage($msg)
{
$ini->pesan = $pesan;
}
}
fungsi cntMsgs($pesan)
{
$n = 0;
/* mengulangi pesan... */
foreach($pesan sebagai $m) {
if ($m->getSeverity() == 'Kesalahan') {
$n++; // tambahkan satu ke hasil;
}
}
kembalikan $n;
}
$pesan = array(new ResultMessage("Kesalahan", "Ini kesalahan!"),
new ResultMessage("Peringatan", "Ini peringatan!"),
new ResultMessage("Kesalahan", "Ini kesalahan lain!"));
$errs = cntMsgs($messages);
echo("Ada kesalahan " . $errs . " pada hasil.n" ?
>
Praktik yang baik: Fungsi dan kelas yang diberi anotasi
Komentar pada Listing 6 memberi tahu pembaca tentang kelas dan metode tujuan. Komentar ini menjelaskan mengapa kode tersebut melakukan tugasnya saat ini, yang dapat berguna saat mempertahankan kode di masa mendatang. Kode mungkin perlu dimodifikasi seiring perubahan kondisi, namun modifikasi mudah dilakukan jika tujuan kode mudah dipahami.
Listing 6. Praktik yang baik: fungsi dan kelas beranotasi
<?php
/**
* Kelas ResultMessage menyimpan pesan yang dapat dikembalikan
* sebagai hasil dari suatu proses
* pesan.
*
* @penulis nagood
*
*/
kelas Pesan Hasil
{
pribadi $ tingkat keparahan;
$pesan pribadi;
/**
* Konstruktor untuk ResultMessage yang memungkinkan Anda menetapkan
* tingkat keparahan dan pesan.
* @param $sev Lihat {@link getSeverity()}
* @param $pesan
* @kembalikan tipe_tidak diketahui
*/
fungsi publik __construct($sev, $msg)
{
$ini->keparahan = $sev;
$ini->pesan = $pesan;
}
/**
* Mengembalikan tingkat keparahan pesan
* "Informasi", "Peringatan", atau "Kesalahan".
* @return string Tingkat keparahan pesan
*/
fungsi publik getSeverity()
{
kembalikan $ini->keparahan;
}
/**
* Mengatur tingkat keparahan pesan
* @param $ tingkat keparahan
* @pengembalian batal
*/
fungsi publik setSeverity($severity)
{
$ini->keparahan = $keparahan;
}
fungsi publik getMessage()
{
kembalikan $ini->pesan;
}
fungsi publik setMessage($msg)
{
$ini->pesan = $pesan;
}
}
/*
* Menghitung pesan dengan tingkat keparahan tertentu dalam array
* pesan.
*
* @param $messages Serangkaian ResultMessage
* @return int Jumlah pesan dengan tingkat keparahan "Error"
*/
fungsi countErrors($pesan)
{
$jumlah pencocokan = 0;
foreach($pesan sebagai $m) {
if ($m->getSeverity() == "Kesalahan") {
$matchingCount++;
}
}
kembalikan $matchingCount;
}
$pesan = array(new ResultMessage("Kesalahan", "Ini kesalahan!"),
new ResultMessage("Peringatan", "Ini peringatan!"),
new ResultMessage("Kesalahan", "Ini kesalahan lain!"));
$errs = countErrors($messages);
echo("Ada kesalahan " .$errs . " pada hasil.n")
;
Menangani Kesalahan
Sebagai pedoman umum, jika Anda ingin menulis aplikasi yang kuat, ikuti aturan 80/20 untuk penanganan kesalahan: 80% kode Anda digunakan untuk menangani pengecualian dan validasi, dan 20% kode Anda digunakan untuk menangani kesalahan. pekerjaan sebenarnya. Hal ini sering dilakukan ketika mengkodekan logika dasar (happy-path) suatu program. Ini berarti menulis kode yang berfungsi secara tersembunyi, bahwa semua data tersedia dan semua kondisi sesuai yang diharapkan. Kode tersebut dapat menjadi rapuh selama siklus hidup aplikasi. Di sisi lain, dibutuhkan banyak waktu untuk menulis kode untuk kondisi yang belum pernah Anda temui sebelumnya.
Kebiasaan ini mengharuskan Anda menulis kode penanganan error secukupnya, dibandingkan menulis kode untuk menangani semua error, sehingga kode tersebut tidak pernah selesai.
Kebiasaan Buruk: Tidak Ada Kesalahan Penanganan Sama Sekali Kode
pada Listing 7 menunjukkan dua kebiasaan buruk. Pertama, parameter masukan tidak dicentang, padahal diketahui bahwa parameter pada keadaan tertentu akan menyebabkan pengecualian pada metode. Kedua, kode tersebut memanggil metode yang mungkin memunculkan pengecualian tetapi tidak menangani pengecualian tersebut. Ketika terjadi masalah, pembuat kode atau orang yang memelihara kode hanya bisa menebak sumber masalahnya.
Listing 7. Kebiasaan buruk: tidak menangani kondisi error
<?php
// Dapatkan nama sebenarnya dari
fungsi convertDayOfWeekToName($hari)
{
$namahari = larik(
"Minggu",
"Senin",
"Selasa",
"Rabu",
"Kamis",
"Jumat",
"Sabtu");
kembalikan $namahari[$hari];
}
echo("Nama hari ke-0 adalah: " .convertDayOfWeekToName(0) . "n");
echo("Nama hari ke 10 adalah: " .convertDayOfWeekToName(10) . "n");
echo("Nama hari 'oranye' adalah: " .convertDayOfWeekToName('orange') . "n")
;
Praktik yang Baik: Menangani Pengecualian
Daftar 8 menunjukkan pelemparan dan penanganan pengecualian dengan cara yang bermakna. Penanganan kesalahan tambahan tidak hanya membuat kode lebih kuat, namun juga meningkatkan keterbacaan kode, sehingga lebih mudah dipahami. Cara penanganan pengecualian merupakan indikasi yang baik mengenai maksud penulis asli saat menulis metode ini.
Listing 8. Praktik yang baik: menangani pengecualian
<?php
/**
* Ini adalah pengecualian jika hari dalam seminggu tidak valid.
* @penulis nagood
*
*/
kelas InvalidDayOfWeekException memperluas Pengecualian { }
kelas InvalidDayFormatException memperluas Pengecualian { }
/**
* Mendapatkan nama hari berdasarkan hari dalam seminggu Will
* mengembalikan kesalahan jika nilai yang diberikan di luar jangkauan.
*
* @param $hari
* @kembalikan tipe_tidak diketahui
*/
fungsi convertDayOfWeekToName($hari)
{
if (!is_numerik($hari)) {
throw new InvalidDayFormatException('Nilai '' .$hari . '' adalah ' .
'format tidak valid untuk hari dalam seminggu.');
}
if (($hari > 6) || ($hari < 0)) {
throw new InvalidDayOfWeekException('Nomor hari '' .$hari . '' adalah ' .
'hari dalam seminggu tidak valid. Perkiraan 0-6.');
}
$namahari = larik(
"Minggu",
"Senin",
"Selasa",
"Rabu",
"Kamis",
"Jumat",
"Sabtu");
kembalikan $namahari[$hari];
}
echo("Nama hari ke-0 adalah: " .convertDayOfWeekToName(0) . "n")
;
echo("Nama hari ke 10 adalah: " .convertDayOfWeekToName(10) . "n");
} tangkapan (InvalidDayOfWeekException $e) {
echo ("Mengalami kesalahan saat mencoba mengonversi nilai: " . $e->getMessage() . "n");
}
mencoba {
echo("Nama hari 'oranye' adalah: " .convertDayOfWeekToName('orange') . "n");
} tangkapan (InvalidDayFormatException $e) {
echo ("Mengalami kesalahan saat mencoba mengonversi nilai: " . $e->getMessage() . "n");
}
?>
Meskipun pemeriksaan parameter merupakan konfirmasi - jika Anda mengharuskan parameter berada dalam keadaan tertentu, hal ini akan berguna bagi orang yang menggunakan metode ini - Anda harus memeriksanya dan memberikan pengecualian yang berarti:
◆ Tangani pengecualian sedekat mungkin Permasalahannya yang muncul mempunyai hubungan yang erat.
◆Penanganan khusus untuk setiap pengecualian.
Jangan gunakan salin-tempel
Anda dapat menyalin-menempelkan kode dari tempat lain ke editor kode Anda, namun ada pro dan kontra dalam melakukannya. Hal baiknya adalah menyalin kode dari contoh atau template dapat menghindari banyak kesalahan. Kelemahannya adalah hal ini dengan mudah mengarah pada banyak metode pemrograman serupa.
Berhati-hatilah untuk tidak menyalin dan menempelkan kode dari satu bagian aplikasi ke bagian lainnya. Jika Anda seperti ini, hentikan kebiasaan buruk ini dan pertimbangkan untuk menulis ulang kode ini agar dapat digunakan kembali. Secara umum, meletakkan kode di satu tempat akan memudahkan pemeliharaannya nanti karena hanya perlu diubah di satu tempat.
Kebiasaan buruk: Cuplikan kode serupa
di Listing 9 menunjukkan beberapa metode yang hampir identik, tetapi dengan nilai berbeda. Ada alat yang dapat membantu menemukan kode yang disalin dan ditempel (lihat Sumberdaya).
Listing 9. Kebiasaan buruk: cuplikan kode serupa
<?php
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() "Error"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
fungsi countErrors($pesan)
{
$jumlah pencocokan = 0;
foreach($pesan sebagai $m) {
if ($m->getSeverity() == "Kesalahan") {
$matchingCount++;
}
}
kembalikan $matchingCount;
}
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() "Peringatan"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
jumlah fungsiPeringatan($pesan)
{
$jumlah yang cocok = 0;
foreach($pesan sebagai $m) {
if ($m->getSeverity() == "Peringatan") {
$matchingCount++;
}
}
kembalikan $matchingCount;
}
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() dari "Informasi"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
fungsi countInformation($messages)
{
$jumlah yang cocok = 0;
foreach($pesan sebagai $m) {
if ($m->getSeverity() == "Informasi") {
$matchingCount++;
}
}
kembalikan $matchingCount;
}
$pesan = array(new ResultMessage("Kesalahan", "Ini kesalahan!"),
new ResultMessage("Peringatan", "Ini peringatan!"),
new ResultMessage("Kesalahan", "Ini kesalahan lain!"));
$errs = countErrors($messages);
echo("Ada kesalahan " .$errs . " pada hasil.n");
?>
Praktik yang Baik: Fungsi yang Dapat Digunakan Kembali dengan
Daftar Parameter 10 menunjukkan kode yang dimodifikasi, yang memasukkan kode yang disalin ke dalam suatu metode. Metode lain juga telah diubah dan sekarang mendelegasikan tugas ke metode baru. Membangun pendekatan umum membutuhkan waktu untuk merancang, dan hal ini memungkinkan Anda untuk berhenti dan berpikir, daripada menyalin dan menempel secara naluriah. Namun waktu yang diinvestasikan dalam pendekatan umum akan membuahkan hasil ketika perubahan diperlukan.
Listing 10. Praktik yang baik: fungsi yang dapat digunakan kembali dengan parameter
<?php
/*
* Menghitung pesan dengan tingkat keparahan tertentu dalam array
* pesan.
*
* @param $messages Serangkaian ResultMessage
* @return int Jumlah pesan yang cocok dengan $withSeverity
*/
fungsi countMessages($messages, $withSeverity)
{
$jumlah yang cocok = 0;
foreach($pesan sebagai $m) {
if ($m->getSeverity() == $withSeverity) {
$matchingCount++;
}
}
kembalikan $matchingCount;
}
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() "Error"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
fungsi countErrors($pesan)
{
return countMessages($messages, "Kesalahan");
}
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() "Peringatan"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
fungsi countWarnings($messages)
{
return countMessages($messages, "Peringatan");
}
/**
* Menghitung jumlah pesan yang ditemukan dalam larik
* ResultMessage dengan nilai getSeverity() "Peringatan"
*
* @param $messages Serangkaian ResultMessage
* @kembalikan tipe_tidak diketahui
*/
fungsi countInformation($messages)
{
return countMessages($messages, "Informasi");
}
$pesan = array(new ResultMessage("Kesalahan", "Ini kesalahan!"),
new ResultMessage("Peringatan", "Ini peringatan!"),
new ResultMessage("Kesalahan", "Ini kesalahan lain!"));
$errs = countErrors($messages);
echo("Ada kesalahan " .$errs . " pada hasil.n");
>
Kesimpulan
Jika Anda mengembangkan kebiasaan baik yang dibahas dalam artikel ini saat menulis kode PHP, Anda akan melakukannya mampu membangun kode yang mudah dibaca, dipahami, dan dipelihara. Kode yang dapat dipelihara dan dibuat dengan cara ini akan mengurangi risiko proses debug, perbaikan, dan perluasan kode.
Menggunakan nama yang bagus dan metode yang lebih pendek meningkatkan keterbacaan kode. Tujuan mengomentari kode adalah untuk memfasilitasi pemahaman dan perluasan kode. Menangani kesalahan dengan tepat membuat kode Anda lebih kuat. Terakhir, berhenti menggunakan salin-tempel untuk menjaga kode Anda tetap bersih dan meningkatkan kegunaan kembali.