Code thế nào mới gọi là chuẩn
Dùng Tabs hay spaces? Để “{“ ngay tại chỗ hay là nên xuống dòng, nên xài 80 chracter width hay 12o?
Các coder luôn cãi nhau về những vấn đề như thế này. Thậm chí vụ tabs vs spaces còn hot tới mức được HBO đưa vào show truyền hình của họ.
Trong bài viết này tôi sẽ đưa ra câu trả lời chính xác nhất cho những vấn đề trên.
Lúc còn trẻ, tôi vẫn hay tham gia bình luận gây war. Tôi cũng xem qua nhiều bài viết về việc tại sao phải làm theo cách này mới đúng trong khi những cách còn lại bị cho là sai hoàn toàn. Và tất nhiên khi xem comment mà nếu có ai nói không đúng theo ý mình là tôi ngay lập tức lao vào gây war.
Phải cho đến khi tôi trải nghiệm việc đời và có sự trưởng thành thật sự thì lúc đó tôi mới tìm được câu trả lời cho những vấn đề như vậy.
Những vấn đề đó chẳng đáng quan tâm
Tính nhất quán mới quan trọng. Phải dễ đọc dễ hiểu. Tranh cãi về cách nào tốt nhất chỉ làm mất thời gian và chả được kết quả gì.
Hơn 20 năm qua, tôi đã trải qua biết bao nhiều trending khác nhau. Điều đó có nghĩa là tôi được tiếp xúc với vô số style code của các ngôn ngữ lập trình. Và điều đáng ngạc nhiên là có dùng style nào thì vẫn chẳng ảnh hưởng đến số bug mà cũng chẳng giúp tôi code nhanh lên tí nào.
Đừng có hiểu nhầm là tôi chê việc code “đẹp”, code gọn. Việc viết code có trật tự, hệ thống và dễ theo dõi luôn là điều đáng mơ ước của các coder. Thế nhưng lí do chọn style để code chỉ vì do nhìn nó đẹp mới là vấn đề bởi nó phụ thuộc vào quan điểm cá nhân.
Một phần khác nữa là việc code luôn cực kì khó nhằn và tốn thời gian. Vì thế đối với những người mới nhập môn với lập trình thì họ luôn cảm thấy “choáng” và cảm thấy tự ti về khả năng code của mình. Do vậy mà họ bỏ nhiều thời gian cho việc tranh cãi những cái vô bổ, chỉ được hình thức mà không có chất lượng.
Và như vậy thay vì tìm kiếm giải pháp, việc tranh cãi lại được sinh ra để ta có thể tránh né những vấn đề khó khăn và to lớn hơn vốn rất cần được xử lý.
Theo “Luật của những thứ không tưởng” của Parkinson, người tranh cãi đôi khi lại không phải là người gặp phải vấn đề đó và họ dùng sự tranh cãi để tránh gặp những vấn đề rất rối hơn. Ông đưa ra môt ví dụ như sau: các kĩ sư là người chịu trách nhiệm cho việc phát triển một quả bom nguyên tử nhưng họ chỉ toàn tranh cãi về việc nên dùng chất liệu gì thay vì tập trung vào vấn đề thiết kế, vốn quan trọng nhất và cũng là khó giải quyết nhất.
Một ví dụ điển hình nữa là về việc xây nhà che nắng cho …..xe đạp vốn vô cùng vô nghĩa và lãng phí tiền bạc, thời gian. Poul-Henning Kamp, một developer người Đan Mạch, đã gọi đó là hiện tượng “bike shedding” để ám chỉ việc trên.
Và nếu bạn làm trong ngành lập trình cũng như là thường xem tinh tức online và các trang mạng xã hội thì bạn sẽ thấy cái “bike shedding” ở khắp nơi. Mọi coder cứ tranh luận, bàn cãi thậm chí là chửi nhau chỉ vì những vấn đề rất cỏn con như ngôn ngữ lập trình là tốt nhất, dùng space hay tab.
Hãy luôn nhớ bất cứ cuộc tranh cãi nào mà càng nóng thì giá trị và kết quả của chúng càng ít đi.
Là một chuyên gia tư vấn, Tôi luôn phải gặp hết khách hàng này đến khách hàng khác, và từng người một đều có những vấn đề và tính cách khác nhau. Vì thế nên cách duy nhất để tôi có thể thành công là phải bơ đi những chuyện nhỏ nhặt, không đáng kể. Và khi liên quan đến việc lập trình thì cứ làm theo cách mình giỏi nhất và chấp nhận kết quả mình đạt được.
Nếu như bạn đang trong quá trình thắc mắc chưa biết phải chọn style code nào thì hãy tự hỏi mình:
- Có tool nào giúp mình viết theo style đó một cách dễ dàng và tiết kiệm thời gian không?
- Những cái tool và style đó có được update thường xuyên không?
Nếu cả 2 câu trả lời đều là có thì bạn cứ làm theo style đó, không phải lo lắng lăng tăng chi nữa.
Sau đây là những nơi để bạn tìm hiểu thêm để đưa ra quyết định của mình:
- DotNet Code Formatter
- Java: Google-Java-Format
- Javascript Standard Style (Đây chỉ là tên của một style chứ không phải là của chính JavaScript)
- PHP Coding Standards Fixer
- Python: Google’s YAPF
- Ruby: Rubocop
Tác giả: Bill Sourour
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS