Có phải một coder viết code càng ngắn thì càng giỏi?


Được đăng vào ngày 01/04/2016 | 0 bình luận
Có phải một coder viết code càng ngắn thì càng giỏi?
Đánh giá bài viết

Câu trả lời là: một coder giỏi là một coder viết đủ code. Không hơn, không kém!

Có một câu chuyện như thế này:

Một coder mới vừa được nhận việc và anh giám đốc công nghệ (CTO) giao cho anh coder mới công việc như sau: “Đây là mã nguồn của bộ lõi phần mềm do công ty chúng ta phát triển, nó đã cực kỳ tối ưu nhưng cậu hãy thử làm cho nó chạy nhanh thêm 10% xem. Chúng tôi không nghĩ là cậu có thể làm được nhưng nó sẽ giúp cậu hiểu rõ hệ thống phần mềm của chúng ta hoạt động như thế nào!”.

Anh bạn mới tìm hiểu bộ mã nguồn và khi đi cực kỳ sâu vào bên trong các module cốt lõi, anh ta đọc đến dòng có một câu lệnh thực hiện phép chia số nguyên. Anh ta cho rằng chia số nguyên một cách trực tiếp là không hiệu quả đối với các bộ xử lý Intel, thế nên anh ta bắt đầu viết lại thuật toán thực hiện phép chia, trong đó có sử dụng các phép nhân ma trận, đoạn code dài thêm khoảng vài chục dòng, mục đích của anh là tận dụng sức mạnh của tập lệnh SSE2 trong bộ xử lý Intel.

Kết quả là hệ thống chạy nhanh thêm 50%.

Anh giám đốc nghe vậy mới nghi ngờ và thốt lên “Cậu đã viết code dài ra! Thế thì làm sao mà nó có thể chạy nhanh hơn được?”

Cả team thậm chí còn nghi ngờ là anh ta đã làm hỏng toàn bộ hệ thống. Tuy nhiên sau vài lần chạy thử thì quả thật là hệ thống đã chạy nhanh hơn thật.

Cuối cùng thì anh lính mới bị đuổi việc 🙂 Thật ra đó là do tính đố kỵ trong văn hóa công ty ở đó.

Trong thực tế thì quả thật là có một số thuật toán chạy tốt nhưng số lượng code lại rất ít, nhưng thường thì các thuật toán phù hợp với công việc không nhất thiết phải là thuật toán có code ngắn. Chẳng hạn như thuật toán BubbleSort, nếu bạn đã từng học môn Cấu trúc dữ liệu và giải thuật thì bạn chắc hẳn phải biết thuật toán này, đây là một thuật toán sắp xếp rất đơn giản và code rất ngắn, nhưng nếu so sánh tốc độ với Quicksort hay Heapsort thì thuật toán này thua xa, mặc dù hai thuật toán Quicksort và Heapsort code phức tạp hơn và dài hơn nhiều.

Ngoài ra độ hiệu quả của code còn có thể được đánh giá qua khả năng đáp ứng của nó đối với yêu cầu công việc chứ không phải là nó chạy như thế nào. Code phải có khả năng xử lý tốt các lỗi exception, logging, unit-test, debug các kiểu, và số lượng code phải dễ đọc, dễ quản lý. Nhưng nếu cứ tập trung vào số lượng code nhiều hay ít thì bạn sẽ bỏ qua nhiều bước quan trọng khác trong viết code.







Bình luận

Hãy trở thành người đầu tiên bình luận

Thông báo cho tôi qua email khi
avatar