Như đã giới thiệu, trong bài này mình sẽ đưa ra nội dung dung về Clean code – mã sạch. Đây là tài liệu cơ bản giành cho bất kì một lập trình viên nào muốn trở nên tốt hơn.
Chúng ta sẽ cùng xem xét các đoạn mã với nhiều góc độ khác nhau. Việc này sẽ hỗ trợ chúng ta phân biệt được các đoạn code tốt, đoạn code xấu. Đương nhiên chúng ta sẽ biết cách để tạo lên một đoạn code tốt và điều chỉnh một đoạn code xấu thành tốt.
Code vẫn sẽ tồn tại (There will be code)
Một dấu hỏi lớn cho tương lai của code?
Có nhiều ý kiến cho rằng,code dần đang bị thay thế. Những lập trình viên đơn giản là không quá cần thiết nữa. Thay vào đó các khách hàng có thể tự tạo ra các chương trình một cách dễ dàng ( đưa các thông số kĩ thuật đầu vào tự động tạo ra chương trình).
Thật là vô lý, chúng ta sẽ không bao giờ loại bỏ được các đoạn code. Các đoạn code sinh ra để thực hiện chi tiết các yêu cầu ở một mức độ nào đó. Những chi tiết đó không thể bị bỏ qua hoặc trừu tượng hóa. Hay nói cách khác không thể dễ dàng hệ thống hóa thành 1 bài toán tổng quát xử lý mọi vấn đề. Và đây là lúc chúng ta cần đến việc viết code để thực hiện hóa các yêu cầu được đặt ra.
Hãy nhớ rằng Code thực sự là ngôn ngữ cuối cùng chúng ta thể hiện các yêu cầu. Chúng ta có thể tạo ra các ngôn ngữ gần với yêu cầu hơn. Chúng ta cũng có thể tạo ra các công cụ phân tích và lắp ráp các yêu cầu đó thành các cấu trúc hoàn chỉnh. Nhưng một điều chắc chắn, chúng ta luôn cần độ chính xác trong các yêu cầu đó. Chính vì vậy các đoạn mã code sẽ luôn luôn tồn tại.
Bad Code
Hậu quả của đoạn mã tồi tệ.
Những đoạn mã tệ có thể giết chết doanh nghiệp, ví dụ trong cuốn sách Clean Code đưa ví dụ về 1 ứng dụng – killer – một ứng dụng đã rất phổ biến. Ứng dụng này nhận được sự tin tưởng bởi nhiều chuyên gia, điều này làm nó càng lúc càng nổi tiếng. Nhưng khi càng nhiều người dùng, nhiều lỗi dần càng lộ ra, thậm chí các bản update cũng không thực sự hoàn chỉnh. Khách hàng dần rời bỏ sản phẩm, cuối cùng, công ty đã phá sản.
Những lý do sinh ra đoạn mã tồi tệ.
Lý do cụ thể cho việc ứng dụng này trở nên tệ hại như vậy được tiết lộ rằng. Sản phẩm được đưa ra thị trường khi chưa sẵn sàng. Ứng dụng đó như là một mớ hỗn độn và nó càng phình to hơn khi thêm các tính năng mới tới lúc không thể quản lý được nữa. Điều gì tới cũng tới, mọi thứ vỡ bung bét, sản phẩm bị khách hàng rời bỏ, công ty bị đóng cửa.
Nếu bạn là 1 lập trình viên có kinh nghiệm, chắc hẳn đã có những lúc bạn cảm thấy thực sự bế tắc trong những đoạn mã tồi tệ. Bạn phải lội qua nó, bơi qua 1 bãi lầy đầy bụi gai. Nhiều lúc ta sẽ tự hỏi mình, điều quái gì đang xảy ra vậy? Đâm lao theo lao, hoặc sẽ bạn sẽ tạo ra đống rác to hơn nữa, hoặc chết chìm trong đống rác đó.
Câu hỏi đặt ra là tại sao cái đầm lầy đó lại xuất hiện ở đây?
Có nhiều lý do cho việc này được đưa ra. Ví dụ như thời gian làm dự án quá gấp gáp, rằng không làm kịp deadline sẽ bị phát, trách mắng… Hay trong khi mệt mỏi, bạn chỉ muốn làm cho nó xong đi cho được việc. Những lúc như vậy chúng ta thường suy nghĩ rằng :”Tạm thời để đó đã, sau sẽ quay lại chỉnh sửa”. Cơ mà điều này đồng nghĩa với việc là không bao giờ chúng ta quay lại cả.
Cái giá phải trả cho việc code lởm (The Total Cost of Owning a Mess)
Code lởm làm cho dự án, công việc của chúng ta chậm lại một cách đáng kể. Thời gian đầu khi phát triển dự án, mọi thứ có vẻ rất tốt, công việc trôi đi như vũ bão trước khi chúng ta kịp nhận ra tốc độ phát triển hình như chậm lại rất nhiều so với lúc đầu. Khi đó dù chỉ 1 thay đổi nhỏ cũng ảnh hưởng tới vài phần khác trong dự án đó. Không có điều gì là dễ dàng. Mọi thứ dường như dính, xoắn lại với nhau. Mọi thứ trở lên hỗ độn và không thể nào dọn sạch được nó. Chắc chỉ còn đường đập đi làm lại mà thôi…
Như một lẽ thương tình, năng suất của cả team giảm sút nghiêm trọng. Quản lý nếu không hiểu rõ vấn đề, sẽ đẩy thêm người vào dự án hi vọng dự án sẽ có hiệu suất cao hơn. Và chúng ta đều biết kết cục của việc này rồi. Nói một cách vui vẻ rằng : “đắp rác cuộc tình”. Năng suất sẽ tiến dần về 0…
Thiết kế lại hệ thống: (The Grand Redesign in the Sky)
Với cường công việc lớn và tâm lý chán nản. Khi làm việc trong một đống rác không phải do mình tạo ra. Chúng ta sẽ luôn muốn làm lại hệ thống, mà không sửa hệ thống ban đầu
Để đảm bảo dự án hoạt động, một team mới được hình thành để phát triển dự án từ đầu. Và một team sẽ tiếp tục phát triển hệ thống cũ cho đến khi hệ thống mới thay thế được cái cũ đã có.
Quá trình này có thể mất rất nhiều thời gian thậm chí lên đến hàng chục năm. Lúc này có thể các thành viên ban đầu trong team phát triển hệ thống mới cũng không còn trong đội nữa. Trong team đó giờ lại là những thành viên mới khác. Các thành viên này lại đề nghị được thiết kế lại hệ thống do chính hệ thống này cũng thực sự quá rác rồi…
Nếu bạn thấy câu chuyện này quen quen, thì chúng ta nên biết rằng, giữ cho đoạn code sạch sẽ không chỉ là giúp cho tăng tính hiệu quả của công việc mà còn là vấn đề sống còn với mỗi lập trình viên.
Tổng kết.
Qua bài này đã anh em nào thấy nhột chưa. hãy cố gắng làm code tốt nhất có thể đừng để “Đắp rác cuộc tình nhé anh em”.
Mình không có nhiều kinh nghiệm trong việc dịch sách do vậy sẽ không tránh khỏi những sai sót. Trong quá trình đọc và tìm hiểu nếu có vấn đề các bạn góp ý để cùng hoàn thiện nhé.
Hãy xem bài tiếp theo có gì hay nhé anh em ” Tổng quan về clean code và code (phần 2) “