Solid principles là gì

     

Phần mềm được xem là tốt lúc khi nó có phong cách xây dựng tốt. Con kiến trúc phần mềm tương từ bỏ như móng nhà, móng yếu đuối nhà sẽ không vững. Để viết được phần mềm giỏi bạn yêu cầu học rất nhiều, điều trước tiên bạn cần phải biết là SOLID.

Bạn đang xem: Solid principles là gì

SOLID ra đời như vậy nào?

Lập trình hướng đối tượng người tiêu dùng (object oriented programming – OOP) là trong những mô hình lập trình được áp dụng nhiều nhất. Các tính chất đặc biệt quan trọng khiến bài toán hướng đối tượng trở nên hiệu quả đó là:

Tính trừu tượng (abstraction): tạo thành các lớp trừu tượng mô hình hoá các đối tượng người sử dụng trong trái đất thực.Tính đóng góp gói (Encapsulation): các thực thể của lớp trừu tượng có các giá trị ở trong tính riêng rẽ biệt.Tính kế thừa (Inheritance): những đối tượng rất có thể dễ dàng thừa kế và không ngừng mở rộng lẫn nhau.Tính nhiều hình (Polymorphism): hoàn toàn có thể thực hiện tại một hành vi đơn theo nhiều phương pháp khác nhau tuỳ theo nhiều loại đối tượng rõ ràng đang được gọi.

Các tính chất đặc biệt quan trọng này của OOP giúp bọn họ xây dựng được những chương trình giải quyết được nhiều vấn đề ví dụ khác nhau trong quả đât thực. Phần nhiều lập trình viên các đã biết các đặc điểm này của OOP, nhưng phương pháp để kết hợp các tính chất này với nhau để tăng kết quả của ứng dụng thì ko phải ai cũng nắm được. Một trong những những hướng dẫn để giúp chúng ta sử dụng được OOP công dụng hơn đó là vẻ ngoài SOLID.


*
*
*
Minh hoạ một ngôi trường hợp vi phạm nguyên tắc Liskov substitution. Nếu xây đắp lớp như vậy này, thì lớp CleanerStaff sẽ sử dụng được hàm checkAttendance(), mà điều đó là không đúng, phải đây sẽ là một trong kiểu xây dựng sai nguyên tắc.

Quay quay trở về ví dụ lớp Emloyee trong phần 1, ta trả sử có công ty sẽ điểm danh vào từng buổi sáng, còn chỉ có những nhân viên trực thuộc biên chế thỏa thuận mới được phép điểm danh. Ta bổ sung phương thức checkAttendance() vào lớp Employee.

Hình dung gồm một trường hợp sau: công ty thuê một nhân viên lao công để triển khai vệ sinh văn phòng, mặc dù cho là một người thao tác cho doanh nghiệp nhưng vị không được cấp số ID buộc phải không được coi là một nhân viên bình thường, mà lại chỉ là 1 trong nhân viên thời vụ, vị đó sẽ không được điểm danh.

Nguyên tắc này nói rằng: Nếu chúng ta tạo ra một lớp CleanerStaff kế thừa từ lớp Employee, và implement hàm working() mang đến lớp này, thì đầy đủ thứ đông đảo ổn, tuy vậy lớp new này cũng lại sở hữu hàm checkAttendance() nhằm điểm danh, mà như vậy là sai lý lẽ dẫn mang đến chương trình bị lỗi. Như vậy, xây đắp lớp CleanerStaff thừa kế từ lớp Employee là không được phép.

Xem thêm: Điều Kiện Đóng Bảo Hiểm Xã Hội, Điều Kiện Đóng Bhxh Một Lần Để Hưởng Lương Hưu

Có nhiều cách để giải quyết tình huống này ví dụ như bóc hàm checkAttendance() ra một interface riêng cùng chỉ cho các lớp Developer, Tester với Salesman implements interface này.

Interface segregation principle

Nội dung:

Thay vị dùng 1 interface lớn, ta nên bóc tách thành nhiều interface nhỏ, với khá nhiều mục đích vắt thể.Nguyên lý này rất dễ dàng hiểu. Hãy tưởng tượng họ có 1 interface lớn, khoảng 100 methods. Bài toán implements sẽ rất vất vả vì những class impliment interface này sẽ bắt buộc phải phải thực thi tổng thể các method của interface. Ngoài ra còn có thể dư thừa vày 1 class không đề nghị dùng không còn 100 method. Khi tách bóc interface ra thành những interface nhỏ, gồm các method tương quan tới nhau, câu hỏi implement và cai quản sẽ dễ dàng hơn.

Ví dụ:

Chúng ta tất cả một interface Animal như sau:

interface Animal void eat(); void run(); void fly();

Chúng ta bao gồm 2 class Dog và Snake implement interface Animal. Tuy nhiên thật vô lý, Dog thì làm sao có thể fly(), cũng như Snake không thể nào run() được? núm vào đó, chúng ta nên bóc tách thành 3 interface như thế này:

interface Animal void eat();interface RunnableAnimal extends Animal void run();interface FlyableAnimal extends Animal void fly();

Dependency inversion principle

Nội dung:

1.Các module cao cấp không nên dựa vào vào các modules cấp cho thấp. Cả hai nên dựa vào vào abstraction.2.Interface (abstraction) không nên phụ thuộc vào đưa ra tiết, mà hoàn toàn trái ngược (Các class giao tiếp với nhau thông qua interface (abstraction), không phải thông qua implementation.)Có thể phát âm nguyên lí này như sau: những thành phần trong 1 chương trình chỉ nên phụ thuộc vào vào những cái trừu tượng (abstraction). Phần lớn thành phần trừu tượng không nên dựa vào vào những thành phần với tính rõ ràng mà yêu cầu ngược lại.

Những loại trừu tượng (abstraction) là những cái ít biến hóa và trở nên động, nó tập hợp các đặc tính thông thường nhất của các cái nuốm thể. Rất nhiều cái cụ thể dù khác nhau thế nào đi nữa những tuân theo các quy tắc thông thường mà chiếc trừu tượng vẫn định ra. Việc dựa vào vào dòng trừu tượng để giúp đỡ chương trình linh động và yêu thích ứng giỏi với những sự chuyển đổi diễn ra liên tục.

Ví dụ:

Lấy lấy ví dụ về ổ cứng của sản phẩm tính, chúng ta có thể dùng nhiều loại ổ cứng thể rắn SSD đời mới để chạy cho nhanh, tuy nhiên cũng có thể dùng ổ đĩa con quay HDD thông thường. Nhà sản xuất Mainboard thiết yếu nào biết bạn sẽ dùng ổ SSD hay một số loại HDD đĩa quay thông thường. Tuy vậy họ đã luôn đảm bảo an toàn rằng chúng ta cũng có thể dùng bất cứ thứ gì các bạn muốn, miễn sao ổ đĩa cứng đó đề xuất có chuẩn giao tiếp SATA để có thể gắn được vào bo mạch chủ. Ở đây chuẩn chỉnh giao tiếp SATA chính là interface, còn SSD tuyệt HDD đĩa quay là implementation thay thể.

Trong lúc lập trình cũng vậy, khi áp dụng nguyên lý này, ở gần như lớp trừu tượng cung cấp cao, ta thường sử dụng interface nhiều hơn thay vì chưng một kiểu thừa kế cụ thể. Ví dụ, để kết nối tới Database, ta thường thi công lớp trừu tượng DataAccess có các phương thức phương thức bình thường như save(), get(), … sau đó tùy vào việc sử dụng loại DBMS nào (vd: MySql, MongoDB, …) cơ mà ta kế thừa và implement số đông phương thức này. đặc thù đa hình của OOP được vận dụng không hề ít trong nguyên lý này.

Tổng kết

SOLID là 5 cơ chế cơ bản trong việc kiến tạo phần mềm. Nó giúp họ tổ chức chuẩn bị xếp những function, method, class một cách chính xác hơn. Làm sao để kết nối các thành phần, module với nhau.

Rõ ràng, dễ dàng hiểu

Teamwork là điều không thể né trong lập trình. Áp dụng SOLID vào công việc bạn sẽ tạo ra các hàm tốt, dễ nắm bắt hơn. Giúp cho chính mình và đồng nghiệp phát âm hiểu code của nhau tốt hơn.

Dễ núm đổi

SOLID giúp tạo ra các module, class rõ ràng, mạch lạc, mang tính độc lập cao. Do vậy khi bao gồm sự yêu cầu vắt đổi, mở rộng từ khách hàng hàng, ta cũng không tốn thừa nhiều sức lực lao động để thực hiện việc gắng đổi.

Xem thêm: Máy Tìm Kiếm Là Gì Kể Tên Một Vài Máy Tìm Kiếm Mà Em Biết, Kể Tên Một Số Máy Tìm Kiếm Mà Em Biết

Tái sử dụng

SOLID khiến cho các xây dựng viên lưu ý đến nhiều hơn về cách viết phần mềm, vì vậy code viết ra đang mạch lạc, dễ dàng hiểu, dễ sử dụng.