Saya memiliki latar belakang Java / Groovy yang kuat dan saya telah ditugaskan ke tim yang memelihara basis kode C yang cukup besar untuk perangkat lunak administratif.
Beberapa titik sakit, seperti berurusan dengan gumpalan di database atau menghasilkan laporan dalam PDF dan Excel telah dieksternalisasi ke layanan web java.
Namun, sebagai seorang pengembang Java, saya agak bingung dengan beberapa aspek kode:
- itu verbose (terutama ketika berhadapan dengan 'pengecualian')
- ada banyak metode besar (banyak 2000 + metode baris)
- tidak ada struktur data lanjutan (Saya sangat merindukan Daftar, Mengatur dan Memetakan)
- tidak ada pemisahan perhatian (SQL dicampur dengan gembira di sekitar kode)
Akibatnya saya merasa bahwa bisnis ini tersembunyi dalam banyak kode teknis dan otak saya, dibentuk dengan Object Oriented dan sejumput pemrograman Fungsional, tidak nyaman.
Sisi baik dari proyek ini adalah bahwa kode lurus ke depan: tidak ada kerangka kerja, tidak ada manipulasi kode byte saat runtime, tidak ada AOP. Dan server dapat secara bersamaan menjawab 10.000 pengguna dengan satu mesin dengan menggunakan lebih sedikit memori daripada kebutuhan java untuk meludah "hello world".
Saya ingin belajar bagaimana menulis kode C sesuai dengan prinsip-prinsip modern yang diterima secara umum. Apakah ada prinsip yang diterima secara umum tentang bagaimana C modern harus ditulis dan disusun?
Sesuatu yang mirip dengan buku 'Java Efektif', tetapi untuk C.
Edit berdasarkan jawaban dan komentar:
- Saya akan mencoba untuk menyesuaikan pola pikir saya ke kode C dan tidak mencoba untuk mencerminkannya ke OOP.
- Saya sudah mulai memindai-membaca panduan gaya pengkodean yang direkomendasikan dari komentar (Standar Pengkodean GNU dan Gaya Pengodean Kernel Linux).
- Saya kemudian akan mencoba mengusulkan gaya kode ini kepada rekan kerja saya. Bagian yang paling sulit adalah meyakinkan rekan kerja bahwa metode besar dapat dibagi menjadi bagian-bagian yang lebih kecil dan bahwa mengulangi 4 baris kode penanganan kesalahan yang sama dapat dihindari dengan bantuan metode.