Mỗi người có một phong cách viết code riêng. Tuy nhiên, hầu hết họ đều “tuân thủ” theo một quy tắc nhất định chung nào đó mà không ai nói, không ai viết, nhưng họ tự ngầm định cho nhau.
Với kinh nghiệm viết code gần 6 năm tôi xin chia sẻ những kinh nghiệm của mình trong suốt quá trình học: Viết code là gì và viết code như thế nào.
1. Viết code là gì?
Tôi có hỏi nhiều lập trình viên, nhiều bạn sinh viên học lập trình nhưng ít người trả lời được câu hỏi “viết code là gì?”. Không máy móc tôi tự định nghĩa theo ý hiểu của mình:
Viết code là quá trình viết các câu lệnh “mà máy có thể hiểu được ” theo một trật tự nhất định nhằm điều khiển hoạt động của máy tính (điện thoại) hoạt động theo mong muốn của mình. Có thể gọi là quá trình tạo ra một sản phẩm “phần mềm”.
2. Viết code như thế nào?
Trước khi các bạn đọc những dòng sau, tôi muốn các bạn nhớ lại rằng viết code là viết cho máy hiểu những gì chúng ta muốn làm. Vì vậy để viết code, các bạn cần biết rõ 2 điều:
– 1 là bạn muốn làm gì: đây là mục đích bạn viết code
– 2 là viết code cho máy hiểu: đây là phần ngôn ngữ lập trình, chỉ cần học là được.
Cả 2 điều này các bạn đều thấy bình thường, nhưng nếu thiếu 1 trong 2 thì bạn không thể viết được code và cũng không nên đọc tiếp.
2.1 Viết code bằng tay
Tôi đã nhiều lần đứng lớp dạy về lập trình. Nhìn các bạn mới học code tôi hiểu các bạn nghĩ “Muốn học giỏi phải chịu khó viết tay” không sai! Nhưng vì tâm lý lo sợ, sợ mình học kém, sợ mình không làm được, sợ không bằng người khác,… dẫn tới hậu quả viết code bằng tay một cách “máy móc”.
Cụ thể: có bạn khi viết code nhớ từng chữ cái, từng dấu chấm,… nhưng viết xong vẫn sai. Tại sao?
Hầu hết các công cụ lập trình hiện nay “rất thông minh” chúng có khả năng suy đoán chúng ta “viết gì tiếp theo”. Ví dụ viết lệnh System.out.println(“”); thì đôi khi chỉ cần viết Sys là công cụ đã gợi ý ra lệnh này, hoặc viết tắt “sou”,….
Không phải nghiễm nhiên nhà phát triển công cụ lại đưa ra chức năng này. Vì họ muốn giúp lập trình viên nhàn hơn, nhanh hơn. Tập chung nhiều hơn vào các việc tư duy logic chứ không phải “nhớ từng ký tự, từng dấu chấm”. Đây cũng là một vấn đề bạn cần quan tâm – chọn trình soạn thảo thích hợp để code cho thuận tiện.
2.2 Copy code
Có nhiều người cho rằng copy code sẽ không hiểu vấn đề. Đúng mà cũng sai!
Nếu bạn lười không nghĩ, không tìm hiểu xem đoạn code bạn copy về nó làm gì và nó làm như thế nào thì bạn sẽ không hiểu, nhưng nếu bạn tìm hiểu thì lại khác, chúng ta vừa hiểu code, vừa nhanh chóng có code và lại vừa mới học được nhiều thứ mới trong đoạn code đó.
2.3 Trình bày code
Vấn đề trình bày luôn là vấn đề quan trọng, mỗi ngôn ngữ có một cách trình bày riêng. Tuy nhiên, các ngôn ngữ đều ngầm định một quy tắc trình bày “chuẩn”:
– Tách biệt các phần lệnh bằng 1 dòng trắng theo tiêu chí nội dung công việc
– Gom các đoạn lệnh thực hiện nhiệm vụ như nhau vào một hàm.
– Căn code theo cấu trúc cha con, đoạn nào nằm trong thì tab nó vào so với thằng cha của nó, các cặp dấu {}, (), “” nên viết cùng một lúc, tức là viết mở thì hãy đóng nó luôn và di chuyển con trỏ sang trái để viết nội dung bên trong.
– Thường xuyên sử dụng phím tắt để căn code thật đẹp mắt, dễ đọc (nếu trình soạn thảo hỗ trợ)
2.4 Viết code thông minh ngắn gọn nhưng phải dễ hiểu
// Tìm số lớn nhất 01 public int max(int a, int b){ return (a > b) ? a : b; } // Tìm số lớn nhất 02 public int max(int a, int b){ int max = a; if(a > b){ max = a; }else{ max = b; } return max; } // Tìm số lớn nhất 03 public int max(int a, int b){ if(a > b){ return a; }else{ return b; } }
Các bạn thấy 3 hàm trên đều dùng để tìm số lớn nhất trong 2 số a, b. Nhưng cách viết nào là hiệu quả, dễ nhớ mỗi người có một lựa chọn khác nhau. Tuy nhiên, đôi lúc phải lựa chọn những cách viết khó hiểu để code ngắn, ít lệnh (lợi thế về tốc độ – cách viết 01). Với những bài đơn giản thì nên chọn những cách viết dễ hiểu dễ nhớ (Cách 03).
2.5 Viết code dễ nhớ – chú thích hiệu quả
Nhiều người thắc mắc cặp lệnh /**/ hay // chẳng mấy khi dùng. Không! nó dùng rất nhiều.
Với mỗi hàm, đoạn lệnh khi chúng ta viết có thể chúng ta hiểu và nhớ ngay nhưng một thời gian sau sẽ quên, nếu xem lại có thể sẽ không hiểu. Vậy việc comment là cần thiết đẻ chú thích các đoạn lệnh phức tạp. Ngoài các nội dung chức năng, trong các phần comment người ta thường viết ngày giờ chỉnh sửa, phiên bản, người viết,… với mục đích tra cứu thuận tiện.