Các mã thực hành sạch của Code có thực sự sạch và hữu ích không? [đóng cửa]


11

Tôi hiện đang thực tập tại một tập đoàn lớn và họ đang trải qua nhiều thay đổi trong cấu trúc phân phối phần mềm (chuyển sang Agile).

Trong vài tháng qua, tôi đã nhận thấy sự gắn bó tôn giáo này với các Clean Codethực tiễn và cuốn sách giống như một cuốn kinh thánh cho các nhà phát triển.

Bây giờ, một trong những tính năng quan trọng nhất của mã sạch là mã tự giải thích dựa trên cách đặt tên dễ hiểu và bao thanh toán lại nghiêm ngặt. Điều này được theo sau bởi no commentingquy tắc.

Tôi hiểu rằng mã sạch này là một khoản đầu tư dài hạn sẽ giúp giảm bớt sự bảo trì và cải tiến mã, nhưng ... điều này có thực sự đáng giá không?

Có ai chia sẻ kinh nghiệm của họ về Clean Code và mọi ý kiến ​​cho dù tôi quá bảo thủ hay đó chỉ là một xu hướng tạm thời.


1
Nhiều câu hỏi hay tạo ra một số mức độ ý kiến ​​dựa trên kinh nghiệm của chuyên gia, nhưng câu trả lời cho câu hỏi này sẽ có xu hướng gần như hoàn toàn dựa trên ý kiến, thay vì sự kiện, tài liệu tham khảo hoặc chuyên môn cụ thể.
gnat

4
Tôi không có ý kiến ​​rất cao về cuốn sách đó (mặc dù tác giả của nó). Nói chung, nó trả tiền để không quá giáo điều. Hầu hết các khuyến nghị lập trình là bởi vì chúng đã được chứng minh là có hiệu quả trong thực tế, nhưng chúng không phải là sự thật tuyệt đối, vì vậy đừng quá lo lắng. Tiếp tục đọc và đi với những gì bạn cảm thấy đúng hơn, nhưng cũng đừng phát minh lại bánh xe. Rất có thể ai đó thông minh hơn chúng ta đã tìm ra giải pháp tốt hơn chính chúng ta.
DPM

2
Một phương thức với tên 70 ký tự có thể làm nhiều hơn một điều. Tôi vi phạm SRP phải không?!
Tombatron

1
Đây là một suy nghĩ khác, 5 hoặc 10 năm nữa khi bạn là nhà phát triển tại một công ty ít quan tâm đến mã sạch, bạn sẽ thực sự đánh giá cao bài tập giáo điều này.
Tombatron

3
Đã làm việc (một thời gian ngắn) dưới "không có bình luận", tôi rất thích nó là một hướng dẫn mạnh mẽ hơn là một quy tắc. Có những lúc cần bình luận - thường là trong logic kinh doanh tối nghĩa. Một phương thức được gọi là CalculateFoonicityMetric()cho bạn biết chính xác những gì nó đang làm và mã được viết tốt sẽ chỉ cho bạn cách ... nhưng cả hai đều không cho bạn biết lý do tại sao . Mã có thể rõ ràng trong những gì (nhân số này với số đó, chia cho thứ khác, bình phương nó, thêm vào bit này ...) nhưng không rõ tại sao (yếu tố = a * b / c; bình phương để giải thích cho foo âm, điều chỉnh cho trôi ...). Tôi đánh giá cao một bình luận nhanh chóng giải thích lý do tại sao.
anaximander

Câu trả lời:


17

Tôi hiểu rằng mã sạch này là một khoản đầu tư dài hạn sẽ giúp giảm bớt sự bảo trì và cải tiến mã, nhưng ... điều này có thực sự đáng giá không?

Chắc chắn rồi.

Tái bao thanh toán là rất quan trọng, nhưng dành 75% thời gian của bạn để di chuyển các phương pháp và dành nhiều thời gian để quyết định tiêu đề phù hợp của nó dường như không hiệu quả.

Chắc chắn, nhưng xem xét rằng công ty lớn có thể có nhiều năm hoặc nhiều thập kỷ mã xấu để làm sạch. Sẽ mất rất nhiều thời gian và công sức để làm điều đó.

Điều chính để nhận ra là cả hai bạn đều đúng. "Mã sạch" là rất quan trọng và Clean Code là một cách được tôn trọng toàn cầu để đạt được điều đó. Vì công ty mới bắt đầu trên con đường, họ sẽ được xem cuốn sách hơn là một nhóm có nhiều kinh nghiệm hơn. Khi họ đã thực hiện được một thời gian ngắn, họ sẽ bắt đầu tìm hiểu những gì hoạt động và những gì không. Một khi họ hiểu điều đó tốt hơn, họ sẽ (hy vọng) theo một cách tiếp cận thực tế và tự nhiên hơn, duy trì mã sạch, nhưng không dẫn đến 70 tên hàm char.


4

Ban đầu tôi đã viết một bình luận. Tôi sẽ cố gắng đưa ra ít câu trả lời hơn các quan điểm cần xem xét. Tuy nhiên, tôi hoàn toàn tán thành các thực hành "Mã sạch" như đặt tên và tái cấu trúc dễ hiểu.

Tôi luôn không thích các quy tắc không có bình luận , vì có những trường hợp cần bình luận để ngăn chặn sự phá vỡ mã trong tương lai. Họ thường nên được giới hạn trong những gì đang được thực hiện và tại sao. Sử dụng chúng một cách tiết kiệm khi mã đang làm điều gì đó bất ngờ hoặc một thuật toán cần được thay thế.

Xem xét năng suất khi bạn đang đọc hoặc duy trì mã. Trong vòng đời của mã, điều này có thể quan trọng hơn năng suất khi viết mã. Những thực hành này sẽ giúp năng suất trong các nhiệm vụ?

Với kinh nghiệm, những thực hành này sẽ trở nên ăn sâu và ít giết người hơn. Chọn đúng tên có thể mất nhiều thời gian hơn vì bạn đang làm rõ những gì mã cần làm. (Việc làm rõ này có thể làm cho việc mã hóa và gỡ lỗi diễn ra nhanh hơn.) Điều này có dẫn đến mã chỉ thực hiện những gì được yêu cầu hoặc có ít lỗi hơn không? Điều này có ảnh hưởng gì đến năng suất?

Thời gian trong việc chọn đúng tên phương thức có thể sẽ được đền đáp ngay lập tức để hiểu rõ hơn mục đích của phương pháp là gì. So sánh tên phương thức "iterateOverCustomers" với "locationActiveCustomers". Cái nào truyền đạt ý định của hàm? Cái nào sẽ dễ dàng hơn để tái cấu trúc nếu cần thiết?


3
Tôi muốn chỉ ra rằng quy tắc "không bình luận" mà mọi người muốn gán cho cuốn sách Clean Code không thực sự ở bất kỳ đâu trong cuốn sách. Ngược lại, có cả một chương về bình luận, nửa đầu dành cho việc mô tả nhiều loại "bình luận tốt", tiếp theo là phần "bình luận xấu". Ý kiến ​​của tác giả về vấn đề này thực sự hợp lý hơn nhiều so với nhiều người cho anh ta tín dụng.
Eric King

Tôi đã bình luận về các quy tắc "không bình luận" nói chung. Tôi đã làm việc trong các ngôn ngữ nơi đã có đề xuất xóa bình luận khỏi định nghĩa ngôn ngữ. Không có bình luận tốt hay xấu. Tại thời điểm đó, chúng tôi đã có một nhận xét trong một khối mã nơi mà nó được mong muốn để vượt qua trong một số trường hợp. Có một cảnh báo bình luận rằng đó là trường hợp và không thêm các khối mã mới vào thời điểm đó.
BillThor

Vâng, điều đó có vẻ khá cực đối với tôi.
Eric King
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.