Ini mungkin pertanyaan yang sulit beberapa tahun yang lalu, tetapi IMO tidak lagi sulit untuk menghilangkan kerumitan yang tidak disengaja saat ini.
Apa yang Kent Becksaid tentang dirinya, pada titik tertentu: "Saya bukan programmer yang hebat; Saya hanya programmer yang baik dengan kebiasaan yang hebat."
Dua hal yang patut disorot, IMO: ia menganggap dirinya seorang programmer , bukan arsitek, dan fokusnya adalah pada kebiasaan, bukan pengetahuan.
Cara Feynman dalam memecahkan masalah sulit adalah satu-satunya cara untuk melakukannya. Deskripsi itu tidak selalu sangat mudah dimengerti, jadi saya akan membedahnya. Kepala Feynman tidak hanya penuh dengan pengetahuan, tetapi juga penuh dengan keterampilan untuk menerapkan pengetahuan itu. Ketika Anda memiliki pengetahuan dan keterampilan untuk menggunakannya, menyelesaikan masalah yang sulit tidaklah sulit dan juga tidak mudah. Itu satu-satunya hasil yang mungkin.
Ada cara yang sepenuhnya non-magis dalam menulis kode bersih, yang tidak mengandung kerumitan yang tidak disengaja, dan sebagian besar mirip dengan apa yang dilakukan Feynman: dapatkan semua pengetahuan yang diperlukan, latihlah untuk membiasakannya bekerja, daripada hanya menyimpannya di beberapa sudut otak Anda, lalu tulis kode bersih.
Sekarang, banyak programmer bahkan tidak menyadari semua pengetahuan yang diperlukan untuk menulis kode bersih. Pemrogram yang lebih muda cenderung membuang pengetahuan tentang algoritma dan struktur data, dan kebanyakan pemrogram yang lebih tua cenderung melupakannya. Atau notasi O besar dan analisis kompleksitas. Pemrogram yang lebih tua cenderung mengabaikan pola atau bau kode - atau bahkan tidak tahu bahwa mereka ada. Sebagian besar programmer dari generasi mana pun, bahkan jika mereka tahu tentang pola, tidak pernah ingat kapan tepatnya menggunakan dan driver bagian. Beberapa programmer dari generasi mana pun secara konstan menilai kode mereka terhadap prinsip-prinsip SOLID. Banyak programmer mencampur semua level abstraksi di semua tempat. Saya tidak mengetahui adanya satu programmer sesama, untuk saat ini, untuk secara konstan menilai kodenya terhadap bau busuk yang dijelaskan oleh Fowler dalam buku refactoring-nya. Meskipun beberapa proyek menggunakan beberapa alat metrik, metrik yang paling sering digunakan adalah kompleksitas, dari satu jenis atau lainnya, sementara dua metrik lainnya - kopel dan kohesi - sebagian besar diabaikan, bahkan jika mereka sangat penting untuk kode bersih. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang didorong oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah di kemudian hari. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. metrik yang paling banyak digunakan adalah kompleksitas, dari satu jenis atau lainnya, sementara dua metrik lainnya - kopel dan kohesi - sebagian besar diabaikan, bahkan jika mereka sangat penting untuk kode bersih. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang didorong oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah di kemudian hari. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. metrik yang paling banyak digunakan adalah kompleksitas, dari satu jenis atau lainnya, sementara dua metrik lainnya - kopel dan kohesi - sebagian besar diabaikan, bahkan jika mereka sangat penting untuk kode bersih. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang didorong oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah di kemudian hari. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. sementara dua metrik lainnya - kopel dan kohesi - sebagian besar diabaikan, bahkan jika mereka sangat penting untuk kode bersih. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang didorong oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah di kemudian hari. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. sementara dua metrik lainnya - kopel dan kohesi - sebagian besar diabaikan, bahkan jika mereka sangat penting untuk kode bersih. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang didorong oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah di kemudian hari. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang digerakkan oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. Aspek lain yang hampir semua orang abaikan adalah beban kognitif. Beberapa programmer menganggap tes unit sebagai dokumentasi, dan bahkan lebih sedikit yang menyadari bahwa sulit untuk menulis atau menyebutkan tes unit adalah bau kode lain, yang biasanya menunjukkan anjak piutang yang buruk. Minoritas kecil menyadari mantra desain yang digerakkan oleh domain untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. Mantra untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang. Mantra untuk menjaga model kode dan model domain bisnis sedekat mungkin satu sama lain, karena perbedaan pasti akan menimbulkan masalah. Semua ini perlu dipertimbangkan, setiap saat, jika Anda ingin kode Anda bersih. Dan masih banyak lagi yang tidak dapat saya ingat sekarang.
Anda ingin menulis kode bersih? Tidak perlu sihir. Cukup pelajari semua yang diperlukan, lalu gunakan untuk menilai kebersihan kode Anda, dan lakukan refactor hingga Anda senang. Dan teruslah belajar - perangkat lunak masih merupakan bidang yang masih muda, dan wawasan serta pengetahuan baru diperoleh dengan cepat.