Dalam pelbagai projek perundingan, saya perhatikan sejak kebelakangan ini bahawa perkara yang sama terus berulang: kod berkelompok. Apa yang saya maksudkan dengan itu? Baiklah, biar saya katakan begini. Apabila anda membuat kod, anda harus memikirkan tentang kod bersih. Ya, saya tahu, seorang lagi di luar sana bercakap tentang kod bersih. Mengapa anda perlu mendengar saya? Sejak saya berumur 12 tahun, saya berminat dengan komputer dan cara kerja. Apabila saya berumur 15 tahun, saya mula menonton Pluralsight, sekumpulan video tentang cara melakukan MVVM, MVC, seni bina, dll. Saya menonton banyak video, tetapi saya belum tahu cara untuk memprogramkan lagi. Saya mengikutinya, tetapi saya ingat tidak memahami banyak perkara yang berlaku.
Dalam beberapa tahun lalu, saya telah bekerja sebagai arkitek dan pembangun perisian kanan untuk pelbagai syarikat. Latar belakang saya adalah dalam bidang kejuruteraan komputer dan perantisan IT. Dan saya cuba berkongsi dengan anda apa yang saya tahu, seperti yang anda semua tahu, untuk membantu orang ramai, tetapi juga untuk mendapatkan pendedahan seperti semua orang di luar sana di LinkedIn. Ya, mereka tidak suka menulis seperti yang anda fikirkan; ia semata-mata model perniagaan. Tetapi itu tidak penting, bukan? Jadi begini. Semoga suatu hari nanti anda akan membeli salah satu produk saya. ;)
Sekarang, izinkan saya memberitahu anda apa yang saya lihat kebelakangan ini dalam projek yang berbeza. Saya berpendapat bahawa sebab kod bersih tidak selalu digunakan tidak semestinya kerana orang tidak mempunyai pengetahuan. Selalunya mengenai tarikh akhir yang ketat dan tekanan daripada projek yang berbeza. Jika anda seorang jurutera perisian seperti saya atau pengurus projek, anda tahu terdapat kekangan dan tekanan masa tertentu yang diperlukan untuk sesuatu projek itu berjaya.
Untuk menyampaikan kepada pelanggan, dan walaupun semasa bekerja secara dalaman, anda menghadapi tarikh akhir dan pihak berkepentingan yang berbeza. Syarikat selalunya beroperasi pada model langganan di mana pelanggan mengharapkan ciri baharu dengan kerap. Ini mewujudkan banyak cabaran. Pemaju dan perancang projek perlu memastikan projek itu bergerak ke hadapan tanpa terjebak dalam perangkap hutang seni bina kerana mereka tidak mempunyai masa yang cukup untuk memikirkan penyelesaian dengan betul.
Apabila masalah itu wujud, sukar untuk dipulihkan dan membaikinya. Daripada pengalaman saya, orang ramai tidak kerap kembali untuk memfaktorkan semula projek mereka—sekurang-kurangnya bukan orang yang saya kenali. Beritahu saya jika anda berbeza. Terdapat pelbagai perkara yang boleh anda lakukan untuk memfaktorkan semula, dan ia banyak membantu, tetapi masalahnya ialah ia tidak diutamakan. Jika kod berfungsi dan pelanggan gembira, pemfaktoran semula tidak berada di bahagian atas senarai. Tetapi mari kita fikirkan dua atau tiga tahun ke hadapan. Apakah yang akan berlaku apabila kod tersebut menjadi semakin berkelompok?
Anda mungkin akhirnya mengupah banyak pembangun untuk membaik pulih seni bina monolitik menjadi seni bina perkhidmatan mikro, yang menelan belanja yang banyak. Inilah sebabnya mengapa anda harus memikirkan tentang kod bersih—bukan hanya apabila anda memulakan projek, bukan sahaja apabila anda bangun, tetapi sepanjang masa. Kerana akhirnya, ia akan kembali menggigit anda jika anda tidak menerapkannya.
Strategi Praktikal untuk Kod Bersih
Semakan Kod Konsisten
Semakan kod yang kerap memastikan pematuhan kepada piawaian pengekodan dan mengetahui potensi isu lebih awal.
Ujian Automatik
Melaksanakan ujian automatik, termasuk ujian unit, ujian integrasi dan ujian hujung ke hujung, membantu mengenal pasti masalah sebelum ia menjadi pengeluaran.
Memfaktorkan Semula Secara Berkala
Luangkan masa dalam jadual projek anda khusus untuk pemfaktoran semula bagi mengelakkan hutang teknikal daripada terkumpul dan memastikan pangkalan kod anda dapat diselenggara.
Mengguna pakai Prinsip PADAT
Prinsip SOLID (Tanggungjawab Tunggal, Tertutup Terbuka, Penggantian Liskov, Pengasingan Antara Muka dan Penyongsangan Ketergantungan) menyediakan rangka kerja untuk menulis kod yang bersih dan boleh diselenggara.
Kosongkan Dokumentasi
Menulis dokumentasi yang jelas dan ringkas membantu pembangun baharu memahami pangkalan kod dengan lebih cepat dan mengurangkan kemungkinan memperkenalkan ralat.
Pair Programming
Pengaturcaraan pasangan membolehkan dua pembangun bekerjasama pada kod yang sama, menangkap kesilapan lebih awal dan berkongsi pengetahuan di kalangan ahli pasukan.
Faedah Jangka Panjang Kod Bersih
Kos Penyelenggaraan Dikurangkan
Kod bersih lebih mudah diselenggara, mengurangkan masa dan wang yang dibelanjakan untuk membetulkan pepijat dan melaksanakan ciri baharu.
Kebolehbacaan dan Kefahaman yang Dipertingkatkan
Pangkalan kod yang bersih lebih mudah dibaca dan difahami, penting untuk menyesuaikan pembangun baharu dan untuk kemampanan projek jangka panjang.
Peningkatan Prestasi
Kod yang tersusun dengan baik membawa kepada prestasi yang lebih baik dengan mengelakkan kerumitan yang tidak perlu dan mengoptimumkan penggunaan sumber.
Skalabilitas yang Lebih Besar
Kod bersih membolehkan penskalaan aplikasi lebih mudah, memudahkan proses menambah ciri baharu dan menyesuaikan diri dengan keperluan yang berubah.
Meningkatkan Kepuasan Pembangun
Bekerja dengan kod bersih mengurangkan kekecewaan dan meningkatkan kepuasan kerja bagi pembangun, membawa kepada produktiviti yang lebih tinggi dan kadar pusing ganti yang lebih rendah.
Contoh Kod Messy
<?php class User extends security\Session { protected $app; public function __construct($app) { $this->app = $app; } public function addSkill(Application $app, Request $request) { $userInput['id'] = $request->request->get('id', null); $userInput['id'] = preg_replace("/[^0-9,.]/", "", $userInput['id']); $app['checkpoint']->minimumRole(1); $user = $app['session']->get('user', []); $userId = $user['profile']['easyJobAddressId']; if ($userInput['id'] === null) { return $app->json(['ok' => true]); } $app['dbs']['appMySql']->insert('skills', [ 'skillId' => $userInput['id'], 'userId' => $userId, 'rank' => 0 ]); return $app->json(['ok' => true]); } }
Kod Difaktorkan Semula
Kod refactored mematuhi prinsip kod bersih dengan memecahkan tanggungjawab, menggunakan suntikan pergantungan dan mengikut prinsip SOLID.
Suntikan dan Pembina Kebergantungan
public function __construct( UserRoleService $userRoleService, RequestStack $requestStack, UserRepository $userRepository, EasyJobServiceInterface $easyJobService, SkillsRepository $skillsRepository, AppDataService $appDataService ) { $this->userRoleService = $userRoleService; $this->requestStack = $requestStack; $this->userRepository = $userRepository; $this->easyJobService = $easyJobService; $this->skillsRepository = $skillsRepository; $this->appDataService = $appDataService; }
Dengan menyuntik kebergantungan, kami memastikan setiap kelas mempunyai tanggungjawab tunggal dan boleh diuji dan diselenggara dengan mudah.
Tanggungjawab Tunggal untuk Menambah Kemahiran
#[Route('/profile/experience/add', name: 'profile_experience_add', methods: ['POST'])] public function addExperience(Request $request): JsonResponse { $this->denyAccessUnlessGranted('ROLE_USER'); $skillId = $request->request->get('id'); if (!is_numeric($skillId)) { return $this->json(['status' => 'error', 'message' => 'Invalid skill ID']); } $userId = $this->getUser()->getId(); $result = $this->appDataService->addSkillToUser($userId, (int) $skillId); return $this->json(['status' => 'ok', 'added' => $result]); }
Di sini, kami menggunakan kaedah khusus untuk mengendalikan penambahan kemahiran. Ia memastikan pengesahan dan mengikut struktur yang bersih dan ringkas.
Pemisahan Kebimbangan
public function index(): Response { $user = $this->getUser(); $userId = $user->getId(); $allSkills = [90, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31]; $skills = array_fill_keys($allSkills, 0); $userSkills = $this->appDataService->getSkillsByUserId($userId); foreach ($userSkills as $skill) { $skillId = $skill->getSkillId(); if (array_key_exists($skillId, $skills)) { $skills[$skillId] = 1; } } }
Perhatikan cara kami menggunakan appDataService untuk memisahkan sistem.
Dengan mengasingkan kebimbangan, kami memastikan setiap kaedah memfokuskan pada satu tugasan, menjadikan kod lebih mudah dibaca dan diselenggara.
Kesimpulan
Kesimpulannya, sentiasa fikirkan tentang kod bersih. Ia mungkin tidak kelihatan mendesak sekarang, tetapi mengabaikannya boleh membawa kepada masalah yang ketara. Mengutamakan kod bersih akan menjimatkan masa, wang dan sakit kepala pada masa hadapan. Pemfaktoran semula secara kerap dan mematuhi piawaian pengekodan adalah kunci untuk mengekalkan asas kod yang sihat. Ingat, usaha yang anda lakukan untuk menulis kod bersih hari ini akan membuahkan hasil dalam jangka panjang, menjadikan projek anda lebih berskala, boleh diselenggara dan menyeronokkan untuk diusahakan.
Atas ialah kandungan terperinci Mengapa kod bersih penting. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!