Khái niệm cơ bản và nguyên lý lập trình
-
-:
- Compile time là lúc chuyển từ ngôn ngữ lập trình mà người hiểu sang ngôn ngữ máy chỉ có máy mới hiểu. Runtime là lúc máy chạy mã máy
- Quy ước đặt tên biến
- toString hoặc href sẽ luôn thêm slash vào sau
- Việc biến đổi dữ liệu chủ yếu là để người dùng đọc cho tiện, và để máy kiểm tra dữ liệu
- Việc đặt tên không có tiền tố gì sẽ tiện khi nó thường được dùng thường xuyên ở những nơi khác, ở trong một danh sách, hoặc khi dùng để liệt kê các thuộc tính
-
Khái niệm cơ bản về lập trình hướng vật thể:
- 4 đặc điểm của lập trình hướng vật thể
- Biểu thức (expression) là những thứ trả lại một giá trị nào đó
- Hoạt động trung tâm của lập trình hướng vật thể là phân loại
- Giao diện là cái khuôn của phương thức
- Hàm cần gọi phải ở trong then
- Hàm vô danh chính là lambda
- Phương thức cho ta biết mình có thể làm gì với vật thể đó
- Phương thức là một thuộc tính của vật thể
- Phương thức phải gắn lên một vật thể cụ thể nào đó để có tác dụng
- this, self là cách để nói rằng hành động mà phương thức sẽ làm sẽ phải gắn lên một vật thể cụ thể của lớp, thứ mà bây giờ chưa được tạo ra
- Để tránh phụ thuộc lòng vòng (circular dependency) có thể dùng hàm
- API là giao diện của một chương trình
- Giao diện là cách để sử dụng vật thể mà không cần biết bên trong nó có gì
- Khi import một hàm thì cả file chứa hàm đó sẽ được chạy. Các import của file đó cũng sẽ chạy theo, dù là để import vào một hàm khác mình không import
- Nên tách bạch file util cho client và util cho server
- Package và library là những cái tên khác nhau cho cùng một thứ
- Chưa rõ lý do vì sao lại dịch object ra thành đối tượng chứ không phải vật thể
- Dùng class khi ta có logic nghiệp vụ thực sự cần được implement để thực thi. Dùng interface để tạo ràng buộc kiểu cho biến
- Không cần biết vật thể chứa dữ liệu gì, chỉ cần quan tâm nó làm được gì
- Lớp là một cái khuôn để tạo các vật thể cho nhanh
- Những vật thể đơn giản dùng để tra cứu dữ liệu theo từ khoá gọi là từ điển
- Prototype là những thuộc tính không cần tạo ra cũng có sẵn
- Thay vì ta thao túng trực tiếp dữ liệu, ta điều khiển vật thể qua phần giao tiếp của nó với bên ngoài
- Từ điển là vật thể được dùng để tra cứu dữ liệu theo từ khoá chứ không phải là để thao tác và thay đổi thuộc tính bằng phương thức
- Việc đóng gói (encapsulation) giúp ta không cần quan tâm vật thể lưu dữ liệu thế nào, mà chỉ cần quan tâm tới thuộc tính và phương thức của nó
- Vật thể ngoài tự nhiên không chứa hướng dẫn để sử dụng nó. Vật thể trong máy tính có hướng dẫn sử dụng nó
- Vật thể được tạo nên bởi những thuộc tính
-
Nguyên lý:
- Bộ nguyên lý SOLID giúp phần mềm dễ bảo trì, dễ mở rộng
- Cái trừu tượng không nên phụ thuộc vào những cái cụ thể mà những cái cụ thể nên phụ thuộc vào cái trừu tượng
- Mảng các vật thể và mảng các mảng
- Mặc dù mảng lưu giữ thứ tự, nhưng nhiều khi ta không quan tâm đến thứ tự đó cho lắm
- Mẫu thiết kế (design pattern) là những giải pháp cho những vấn đề thường gặp trong lập trình mà nhiều thế hệ lập trình viên đã đúc kết và chứng minh tính hiệu quả của nó
- Nguyên lý
- Người mới lập trình thường hỏi nên dùng cú pháp, thư viện, hay ngôn ngữ nào. Lập trình viên nhiều kinh nghiệm thường tập trung vào các khái niệm trừu tượng
- Stable = the APIs are not expected to change in a breaking way. Production ready = supports its intended usecases and doesn’t contain major bugs.
- Giao diện người dùng, logic, dữ liệu là 3 thành phần cơ bản cho một chương trình. Chúng có mục tiêu khác nhau, kỹ thuật xử lý khác nhau. Không thể trộn lẫn lộn với nhau được.
- Model không biết đến View, View không biết đến Controller
- Bản thân việc lập trình bằng ngôn ngữ bậc cao đã là một dạng comment
- Block comment dành cho việc giải thích ý tưởng của code, viết doc. Line comment để debug hoặc hướng dẫn editor đọc code của mình (directive)
- Comment có thể cho thông tin sai, nhưng code thì không
- Comment cũng có bug, nhưng không giống như code, không có chương trình nào hỗ trợ debug được nó
- Giải thích về thuật toán, các đánh đổi trong việc ra quyết định hoặc dẫn nguồn là các lý do tốt để comment
- Hãy viết code sao cho mình khỏi comment
- Thay vì comment, hãy document. Thay vì giải thích cách code hoạt động, hãy hướng dẫn cách sử dụng nó
- Viết comment
- Việc tách một khối code thành một hàm khiến cho việc đọc từng dòng trở thành đọc từng bước
- while familiarity is a perfectly fine reason, it is really a bad sign if it is the only reason
- Mỗi lớp, hàm, mô đun chỉ đảm nhiệm một nhiệm vụ xác định
- Sự couple dễ được sinh ra khi muốn xử lý các dữ liệu giống nhau về chức năng và na ná nhau về cấu trúc và cách xử lý
- Tránh dùng hàm lồng để làm giảm sự couple
- Việc chia các lệnh trong kịch bản thành các hàm nhỏ hơn sẽ giúp dễ bắt lỗi hơn