Những gì các lập trình viên cấp cao có thể học hỏi từ những người mới bắt đầu (P2)
Mặc dù những người mới bắt đầu sẽ không hiểu sâu và thành tạo công cụ nâng cao, nhưng việc họ áp dụng phương pháp đơn giản có thể lại giúp vấn đề được xử lý nhanh hơn.
- Công bố chủ nhân giải thưởng xCode - Lập trình thuật toán 2023
- Đi làm lương thấp nên chuyển nghề gì hợp thời nhất?
- Học lập trình ở đâu? Mách bạn nơi học tốt nhất
- Cử nhân Cơ điện tử chuyển nghề lập trình viên sau 7 tháng học online
- Giúp cha mẹ hướng dẫn con học lập trình dễ dàng
Table of Contents
Phần trước FUNiX đã chia sẻ 03 bài học từ một người mới học lập trình: Đảo ngược câu điều kiện, trực giác là yếu tố cần có với lập trình viên và tìm giải pháp trực tiếp cho mọi vấn đề (bạn có thể đọc phần 01 tại đây). Trong bài viết này, chúng ta sẽ cùng tìm hiểu 02 bài học nữa từ người mới. Chúng sẽ giúp bạn xử lý vấn đề đơn giản hơn, tạo ra các dòng code sáng tạo và mang lại hiệu quả cao trong công việc.
Mọi thứ đều phải là Class (lớp)
Hầu hết những người mới học lập trình không có khả năng viết code bên ngoài mô hình Class. Một lý do là vì sinh viên chỉ được giới thiệu về Java trong trường đại học. Khi đã làm việc với nhiều ngôn ngữ lập trình, bạn sẽ thấy Java sẽ yêu cầu “mọi thứ phải là Class”.
Nhưng sau hơn 20 năm xuất hiện trên thị trường, Java vẫn chỉ đang cố gắng cải tiến thành ngôn ngữ mà mọi người thực sự muốn. Để hiểu tại sao đây là vấn đề chứ không phải là sự chỉ trích về ngôn ngữ Java. Nếu đứng dưới góc độ người mới học lập trình, bạn sẽ chỉ hiểu khái niệm ở mức độ mà chúng được trình bày. Nên khi họ sử dụng ngôn ngữ Java và thực hiện mô hình Class, những người này có xu hướng hiểu rằng đơn vị code là Class và hy vọng biến sẽ hoạt động giống như đối tượng. Việc dùng ngôn ngữ hướng đối tượng khác như C++ sẽ nhanh chóng chứng minh rằng code không nhất thiết là Class. Việc bạn viết toàn bộ Class theo logic căn bản và không theo trạng thái nào là điều không quan trọng. Trên thực tế, ngữ nghĩa (semantic) và sự đảm bảo (guarantee) là yếu tố giúp Java trở thành ngôn ngữ phổ biến nhất trên thế giới.
Các vấn đề về ngữ nghĩa sẽ tạo ra những sai lầm cho người mới bắt đầu với lập trình. Nếu nhìn lại thế giới Java, bạn sẽ nhận thấy rất ít ngôn ngữ phần mềm hướng đối tượng.
Bài học:
Khả năng giải quyết vấn đề đa dạng là yếu tố quan trọng mà bạn phải có với tư cách một nhà phát triển. Bắt đầu bằng cách học ngôn ngữ duy nhất là điều đúng đắn, nhưng chúng ta phải nhanh chóng làm cho sự hiểu biết của mình trở nên phong phú hơn. Như vậy, bạn sẽ từ lập trình viên “tốt” trở thành lập trình viên “tuyệt vời”.
Cú pháp và cấu trúc mạnh mẽ
Người mới bắt đầu có xu hướng dựa vào cú pháp và cấu trúc nhất quán hơn nhiều so với nhà phát triển có kinh nghiệm. Thông thường, chúng ta bị làm việc theo khuôn mẫu nhất định trong đó cú pháp và cấu trúc. Đối với nhà lập trình có kinh nghiệm, việc hiểu cách code hoạt động thường đến từ việc tìm hiểu ý nghĩa và đọc mã nguồn của nó – Đây cũng là cách mà những nhà phát triển giỏi nhất vẫn thường làm. Việc so sánh với code của mình viết ra với code khác là điều cơ bản để chúng ta nhận ra được vấn đề.
Để viết Class C++ có trạng thái bên trong tương đối phức tạp, chúng ta sẽ cần dựa trên mục tiêu và mục đích sử dụng của Class. Điều này có tác dụng khi phương thức trực tiếp thay đổi trạng thái, trong khi những phức thức khác trả về bản sao. Nhưng nhiều lập trình viên cho rằng, họ đã không thể tiến bộ giữa việc phân biệt phương pháp nào đang làm thay đổi trạng thái và phương pháp nào không. Đây là vấn đề phổ biến mà lập trình viên có kinh nghiệm ít gặp phải. Vì họ chỉ đơn giản xem xét logic của phương pháp và xác định xem trạng thái có bị biến đổi hay không. Nhưng người mới bắt đầu chưa đủ sự thành thạo để nhanh chóng phân tích cú pháp theo logic tương tự đó, nên họ đã dựa vào cú pháp và cấu trúc mã để viết code.
Nếu như ban đầu chúng ta thực hiện nhiều phương pháp, đồng thời ta sẽ cần đảm bảo có sự kết hợp linh hoạt giữa việc có thể thay đổi và không thể thay đổi đoạn code. Mọi phương thức có thể biến đổi đều là hàm void và mọi phương pháp bất biến đều có kiểu trả về.
class MyType {
void addElem(int elem);
MyType createCopy();
…
};
Nhiều sinh viên IT được dạy rằng khuôn mẫu rõ ràng là không đúng thực tế, nên họ sẽ rất khó khăn khi thực hiện biến bool removeElem(int elem) hoặc void printElems(). Những code mà sinh viên được xem thường được viết dựa trên thực chứ không tuân theo logic của cú pháp và cấu trúc. Nên những người mới sẽ cảm thấy mơ hồ và khó hiểu. Nhưng nếu thông qua việc sử dụng từ khóa const sẽ giúp chỉ ra rõ ràng, nếu phương thức có khả năng thay đổi trạng thái:
class MyType {
void addElem(int elem);
bool removeElem(int elem);
void printElems() const;
MyType createCopy() const;
};
Bài học:
Người khác rất khó để nhớ cách diễn giải dòng code mà bạn viết. Các lập trình viên nên ưu tiên dùng phong cách nhất quán và hãy viết code theo cách dễ hiểu và rõ ràng nhất.
Kết luận
Khi đã áp dụng nhiều phương pháp viết code, lập trình viên sẽ nhận ra rằng có những lựa chọn giúp tạo ra dòng code đơn giản và dễ đọc, nhưng cũng có những phương thức khiến sản phẩm của bạn trở nên rắc rối và khó hiểu. Qua bài viết chúng ta thấy, đôi khi sự đơn giản và tối thiểu lại mang đến nhiều lợi ích cho việc viết code. Mặc dù những người mới bắt đầu sẽ không hiểu sâu và thành tạo công cụ nâng cao, nhưng việc họ áp dụng phương pháp đơn giản có thể lại giúp vấn đề được xử lý nhanh hơn.
Hy vọng những thông tin mà FUNiX chia sẻ sẽ giúp bạn có giải pháp tốt nhất cho dòng code của mình. Chúc bạn thành công với đam mê và vững bước trên con đường sự nghiệp lập trình viên của mình!
Công Sơn
Nguồn tham khảo: https://stackoverflow.blog/2019/12/19/what-senior-developers-can-learn-from-beginners/
Bình luận (0
)