Xin đừng làm code bẩn

Nguyên nhân nào gây ra code bẩn? Chúng ta hay giải thích do requirement thay đổi so với thiết kế ban đầu, do thời gian quá gấp gáp để làm mọi thứ kỹ lưỡng, do người quản lý dự án yếu kém và khách hàng cố chấp. Nhưng thật ra lỗi lầm là do chúng ta - những developer, do chúng ta thiếu sự chuyên nghiệp.

Đây có thể là 1 liều thuốc đắng khó nuốt, làm thế quái nào mà là do lỗi của coder được? Còn yêu cầu vô lý thì sao? Còn thời gian biểu dày đặc? Còn những gã quản lý phát xít? Họ không phải chịu trách nhiệm gì sao?

Không. Người quản lý đảm bảo cho dự án đúng tiến độ và cam kết, khách hàng thì kiểm chứng hệ thống phù hợp với requirement đưa ra, họ chỉ làm đúng phần việc của mình. Chính chúng ta đóng góp vào kế hoạch của dự án và do đó phải chịu trách nhiệm cho bất cứ thất bại nào, nhất là những thất bại do code bẩn.

Có thể bạn sẽ cãi “Nếu tao không làm theo lời sếp, tạo sẽ bị đuổi”. Chưa chắc, người quản lý nào thật ra cũng thích code sạch cả, code sạch nghĩa là ít bug, có thể họ sẽ thay đổi lại lịch trình, có thể họ sẽ bảo vệ thời gian biểu và requirement vì nghĩa vụ, nhưng bạn cũng có nghĩa vụ bảo vệ những dòng code của mình.

Giả định như chuyện gì xảy ra nếu người bệnh nhân yêu cầu bác sĩ dừng rửa tay trước khi phẫu thuật vì tốn thời gian? Rõ ràng khách hàng là thượng đế, nhưng chắc chắn bác sĩ sẽ từ chối, tại sao? Vì bác sĩ là người biết rõ hơn bệnh nhân về các mối nguy hiểm do vi khuẩn và nhiễm trùng. Thật là thiếu chuyên nghiệp (nếu không muốn nói là tội ác) nếu bác sĩ nghe theo lời bệnh nhân.

Vậy nên thật thiếu chuyên nghiệp cho lập trình viên nếu chiều theo sếp, người không hiểu về các hiểm nguy của code bẩn mang lại.

Nguồn: Clean Code by Robert C Martin
Dịch: Tom

Bài viết về coding standards trong PHP cho ai quan tâm https://goo.gl/QbTjbD
Mọi người chia sẻ thêm về ngôn ngữ, nền tảng mình đang sử dụng nhé :slight_smile:

2 Likes
void Abc(){
    try{
        int xyz;
        //............
    }
    catch{
    }
}

“Thôi cứ làm thế thôi. Chạy được là được. Sau này cải tiến sau”
Rồi 1 hay 2 hay 5 năm sau vẫn thế. :smile:

2 Likes

later is never :blush:

Dân sai thì dân chịu, trách ai bây giờ, chẳng lẽ lại là lỗi lãnh đạo.
Dev sai thì dev chịu, trách ai bây giờ, chẳng lẽ lại là lỗi leader.

Lãnh đạo gương mẫu, phân công và kiểm tra đúng người thì dân mới phục
Leader phải code đẹp, phân chia công việc và review code thì dev mới phục.

4 Likes

Lý thuyết, tester có quan tâm “code bẩn”, PM có quan tâm “code bẩn” không? khách hàng có quan tâm “code bẩn”? Vậy họ quan tâm gì nhất ? họ quan tâm tiền trả cho dự án = số task và thời gian hoàn thành . PM thì muốn báo khách hàng ít thời gian nhất có thể để “chốt tiền, chốt sale”. Tester quan tâm gì nhất? bug và bug để báo cáo, dev hoàn tất nhanh để test. Tester có muốn cho dev 2h để ngồi “ngắm lại code” không, khi bug cũ vẫn còn chưa ai fix ? cũng như dev có quan tâm tester 2h để ngồi “review test-case” không? Vậy PM có quan tâm 8h cho cả team ngồi review code.
Vậy “code bẩn” từ đâu ra? ở trường thầy có paste code ra để ngồi ngắm không? ra trường leader có được công ty trả tiền để ngồi review code không? Câu trả lời trường ĐH lớn sẽ dạy sv code đúng chuẩn, vì các thầy đều đã có thời gian leader cho các công ty. Công ty lớn sẽ review code vì dự án lớn, khách hàng trả tiền để leader ngồi review code theo quy trình, sau này còn maintain, fix bug, tái sử dụng source đã review (một dự án > 1 năm). Leader review, viết doc để có người nghĩ việc, còn training người mới theo kịp dự án.
Sinh viên “bắt buộc” phải code đúng chuẩn, vì code của mình sau này xem lại, “code bẩn” sau này sẽ khó fix bug, bảo trì. “code bẩn” sẽ bị leader, đồng nghiệp đánh giá thấp,vì họ “nổi điên” khi cần code tiếp chức năng, fix bug chức năng cũ, họ điên vì mất thời gian đọc “code bẩn” (Một đống rác thực sự :smiley: )

3 Likes

Chuẩn bài hiện trạng VN. Không ai nhận trách nhiệm code đẹp, leader bảo là do dev. Dev lại nói do leader chỉ lo requirement, tester chỉ việc tìm bug. Code bẩn không do ai cả, giáo viên không dạy.

Tuy nhiên, nếu đứa đứng đầu quan tâm, đưa ra code style, bắt tuân theo, thì không chỉ dev mà cả tester cũng phải code đẹp. Trong tổ chức bắt lỗi chung thì nên bắt leader chứ không phải là dân đen.

3 Likes

Nói rất hay, leader cũng phải là 1 coder cứng thì mới có khả năng này

1 Like

đến khi deadline thì dễ xảy ra tình trạng này lắm…@@

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?