Please enable JavaScript.
Coggle requires JavaScript to display documents.
Tuần 3 - Coggle Diagram
Tuần 3
CleanCode
Clean Code
thuật ngữ chỉ mã sạch
Đặc điểm:
Dễ đọc, đơn giản, dễ cải tiến/mở rộng, tên class/menthod/biến thể hiện rõ ý nghĩa, ít phụ thuộc, không trùng lặp,đúng ý tưởng thiết kế
Code Smell
Là mã nguồn gây khó khăn cho việc đọc, bảo trì mở rộng.
Class, biến, menthod không đúng chuẩn, mentod sử lý quá nhiều chức năng cùng lúc, menthod có nhiều tham số, phương thức quá dài, mã nguồn trùng lặp, lạm dụng comment.
Demo refactoring
Tái cấu trúc mã nguồn làm cho mã nguồn trở thành " clean code" nhưng vẫn phải đảm bảo không làm thay đổi tính đúng đắn ban đầu của chương trình.
kỹ thuật refectoring:+ đổi tên class,biến, menthod
tách biến, hằng, phương thức
DSA List
Java collection framework
Là khuôn khổ cung cấp 1 kiến trúc để lưu trữ và thao tác tới nhóm các đối tượng
Interface collection
List: Là cấu trúc dữ liệu tuyền tính, trong đó các phần tử được sắp xếp theo thứ tự xác định.Nó cho phép các phần tử được trùng lặp.
Queue: Hàng đợi , hoạt động theo cơ chế FIFO (fist in fist out).
Set: + mỗi phần tử thì xuất hiện 1 lần duy nhất
+ Tập hợp chưa đx sắp xếp.
Array list:
Là 1 class dạng list dựa trên mảng có kích thước thay đổi được
Các thao tác cơ bản:add();get();remove();indexOf
Lisked list
Là 1 class dạng list hoạt động dựa trên cơ sở cấu trúc dữ liệu danh sách liên kết.
Set: Lưu trử phần tử không trùng lặp
hand set: Các phần tử tử được lưu dưới dạng mã băm nó sẽ không duy trì thứ tự chèn
LinkedHandSet: Các phần tử được lưu dưới dạng mã băm, cấu trúc dưc liệu dạng danh sách liên kết, duy trì thứ tự chèn.
treeSetz: Sử dụng 1 tree cho lưu trữ, mặc định các phần tử được sắp xếp tăng dần
DSA STACK, QUEUE
Generic
Generic là cơ chế cho phép sử dụng kiểu dữ liệu như là tham số (tham số hóa kiểu dữ liệu)
Ưu điểm: +phat hiện lỗi ngay tại thời điểm biên dịch
Không cần ép kiểu
+Xây dụng các thuật toán tổng quát,tái sử dụng mã nguồn
Nhược điểm: +Không thể gọi generic với kiểu nguyên thủy
Không thể tạo intance cho kiểu generic
Không dùng Static cho generic
Không khởi tạo mảng genrric
Không tạo class ngoại lệ là generic
STACK
Stack ( ngăn xếp): là 1 cấu trúc dữ liệu dạng danh sách, thêm và lắp phần tử theo quy tắt FILO
Một số phương thức: + thêm: push, lấy ra xem peek, lấy ra xem và xóa :pop, kiểm tra rổng empty, isEmpty, tim kiếm: Search
Queue
Queue (hàng đợi): là một cấu trúc dữ liệu danh sách, thêm và lấy phần tử theo quy tắt FIFO
Có 3 lớp
Linked List,
Priority Queue,
Array Deque
Một số phương thức: + add() :thêm mới, offer() thêm mới, element: lấy phần tử ở đầu hàng đợi, peek () lấy phần tử ở đầu hàng đơi
Map Tree
Map
Sử dụng để lưu trữ và truy xuất theo cặp khóa và giá trị
Đặc điểm : +mỗi cặp key- value được gọi là emtry
Map không được phép 2 key trùng nhau
+Mỗi key tương ứng là 1 value
Hash map
Giống Map
Điểm khác so với Map: +Không đảm bảo thứ tự emtry được thêm vào
Cho phép một key null
Cho phép value có thể có nhiều null
Linked hashmap: Duy trì các phần tử -emtry theo ký tự chèn vào
Tree map:
không cho key giá trị null
+Duy trì các phần tử thêm vào theo kí tự key đx sắp xếp
SEARCH ALGORITHMS
Độ phức tạp của thuật toán
Được hiểu là thời gian thực hiện số phép tính mà thuật toán cần thực hiên với bộ dữ liệu vào có kích thươc n
n có thể là phần tử của mảng
Linear
Mỗi phần tử đều được kiểm tra nếu tìm thấy phần tử cần tìm thì trả về index của nó
Độ phức tạp:
trường hợp tối ưu:0(1)
Trường hợp tệ nhất : 0(n) -n
thường áp dụng:
Tập hợp có số lượng nhỏ
tập hợp chưa được sắp xếp
Bianary search
Tập hợp phải được sắp xếp tăng và giảm
So sánh phần tử cần tìm với phần tử ở giữa mảng
Nếu không tìm thấy thì trả về index
Nếu phần tử cần tìm lớn hơn phần tử giữa thì phần tử cần tìm sẽ nằm ở mảng con bên phải của phần tử giữa
Nều phần tử bé hơn phần tử giữa, thì phần tử cần tìm sẽ ở mảng con bên trái của phần tử giữu
tối ưu ; ở giữa
tệ nhất 0(log n)