Solid là gì? áp dụng solid để trở thành lập trình viên giỏi

Phần mềm được xem như là xuất sắc Khi Khi nó gồm phong cách thiết kế xuất sắc. Kiến trúc ứng dụng giống như như móng nhà, móng yếu hèn công ty sẽ không còn vững vàng. Để viết được ứng dụng xuất sắc bạn nên học không hề ít, điều đầu tiên bạn cần biết là SOLID.

Bạn đang xem: Solid là gì? áp dụng solid để trở thành lập trình viên giỏi

SOLID Thành lập như vậy nào?

Lập trình hướng đối tượng người dùng (object oriented programming – OOP) là 1 trong Một trong những quy mô thiết kế được thực hiện những độc nhất vô nhị. Các tính chất quan trọng khiến cho việc hướng đối tượng người tiêu dùng trnghỉ ngơi đề nghị kết quả đó là:

Tính trừu tượng (abstraction): Tạo ra các lớp trừu tượng quy mô hoá những đối tượng người dùng trong thế giới thực.Tính đóng gói (Encapsulation): Các thực thể của lớp trừu tượng có những quý giá nằm trong tính lẻ tẻ.Tính kế thừa (Inheritance): Các đối tượng người sử dụng hoàn toàn có thể thuận lợi thừa kế và không ngừng mở rộng lẫn nhau.Tính nhiều hình (Polymorphism): cũng có thể tiến hành một hành vi đơn theo rất nhiều phương pháp khác biệt tuỳ theo nhiều loại đối tượng cụ thể đang rất được gọi.

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


*
*
*
Minh hoạ một ngôi trường hợp vi phạm qui định Liskov substitution. Nếu kiến tạo lớp như vậy này, thì lớp CleanerStaff đang cần sử dụng được hàm checkAttendance(), mà lại điều này là không ổn, phải trên đây đang là một loại xây đắp không nên hiệ tượng.

Quay trở lại ví dụ lớp Emloyee trong phần 1, ta trả sử tất cả chủ thể đã điểm danh vào mỗi buổi sớm, và chỉ còn có các nhân viên cấp dưới thuộc biên chế bằng lòng mới được phép điểm danh. Ta bổ sung cập nhật cách thức checkAttendance() vào lớp Employee.

Hình dung tất cả một trường đúng theo sau: cửa hàng mướn một nhân viên cấp dưới lao công để triển khai vệ sinh văn phòng, khoác dù là một fan thao tác làm việc cho quý doanh nghiệp nhưng lại bởi vì ko được cung cấp số ID đề nghị ko được coi là một nhân viên thông thường, mà chỉ là 1 trong những nhân viên cấp dưới thời vụ, do đó sẽ không lấy điểm danh.

Nguim tắc này nói rằng: Nếu họ tạo ra một tờ CleanerStaff thừa kế từ bỏ lớp Employee, và implement hàm working() đến lớp này, thì gần như thứ phần nhiều ổn định, tuy nhiên lớp mới này cũng lại sở hữu hàm checkAttendance() nhằm điểm danh, mà như vậy là sai biện pháp dẫn cho lịch trình bị lỗi. Vậy nên, xây dựng lớp CleanerStaff kế thừa từ bỏ lớp Employee là không được phxay.

Xem thêm: Tra Cứu Điểm Thi Đh - Tra Cứu Điểm Thi 2013

Có các phương pháp để xử lý trường hợp này ví như tách hàm checkAttendance() ra một interface riêng biệt và chỉ còn cho những lớp Developer, Tester cùng Salesman implements interface này.

Interface segregation principle

Nội dung:

Thay vì chưng cần sử dụng 1 interface bự, ta đề xuất bóc thành nhiều interface bé dại, với khá nhiều mục tiêu cụ thể.Nguyên ổn lý này dễ dàng nắm bắt. Hãy tưởng tượng họ có một interface mập, khoảng chừng 100 methods. Việc implements sẽ khá vất vả vì chưng các class impliment interface này vẫn sẽ phải phải tiến hành toàn bộ những method của interface. Ngoài ra còn rất có thể dư thừa vày 1 class không đề nghị cần sử dụng không còn 100 method. Khi bóc tách interface ra thành những interface bé dại, bao gồm các method liên quan tới nhau, câu hỏi implement với thống trị đang dễ dàng hơn.

Ví dụ:

Chúng ta có một interface Animal nhỏng sau:

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

Chúng ta tất cả 2 class Dog và Snake implement interface Animal. Nhưng thiệt vô lý, Dog thì làm sao tất cả thể fly(), cũng như Snake bắt buộc nào run() được? Ttuyệt vào đó, bọn họ bắt buộc bóc tách thành 3 interface như vậy 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 V.I.P tránh việc phụ thuộc vào vào các modules thấp cấp. Cả 2 phải dựa vào vào abstraction.2.Interface (abstraction) tránh việc phụ thuộc vào chi tiết, mà ngược lại (Các class tiếp xúc với nhau trải qua interface (abstraction), chưa phải thông qua implementation.)cũng có thể đọc nguyên lí này như sau: phần lớn nguyên tố trong một lịch trình chỉ nên nhờ vào vào các chiếc trừu tượng (abstraction). Những yếu tắc trừu tượng không nên phụ thuộc vào những yếu tắc mang tính chất ví dụ mà lại cần ngược lại.

Những mẫu trừu tượng (abstraction) là các chiếc ít biến hóa và biến động, nó tập vừa lòng đầy đủ đặc tính bình thường tốt nhất của các dòng rõ ràng. Những dòng cụ thể dù khác biệt vắt nào đi nữa phần đa tuân theo những phép tắc phổ biến nhưng mà mẫu trừu tượng sẽ định ra. Việc phụ thuộc vào cái trừu tượng để giúp đỡ công tác biến hóa năng động và say đắm ứng tốt với những sự chuyển đổi ra mắt liên tiếp.

Ví dụ:

Lấy ví dụ về ổ cứng của dòng sản phẩm tính, bạn có thể dùng các loại ổ cứng thể rắn SSD đời mới để chạy mang lại nkhô giòn, tuy nhiên cũng có thể sử dụng ổ đĩa quay HDD thường thì. Nhà chế tạo Mainboard quan trọng như thế nào biết bạn sẽ dùng ổ SSD tốt một số loại HDD đĩa cù thông thường. Tuy nhiên chúng ta sẽ luôn bảo đảm rằng chúng ta có thể dùng bất kể vật dụng gì bạn có nhu cầu, miễn sao ổ đĩa cứng kia đề nghị gồm chuẩn chỉnh tiếp xúc SATA để rất có thể gắn được vào bo mạch nhà. Ở phía trên chuẩn chỉnh giao tiếp SATA đó là interface, còn SSD hay HDD đĩa con quay là implementation ví dụ.

Trong Lúc thiết kế cũng thế, Khi áp dụng nguyên lý này, nghỉ ngơi hầu như lớp trừu tượng V.I.P, ta thường thực hiện interface nhiều hơn thế nữa nạm bởi một mẫu mã kế thừa rõ ràng. lấy ví dụ, để kết nối tới Database, ta thường xuyên kiến thiết lớp trừu tượng DataAccess bao gồm các thủ tục cách thức thông thường như save(), get(), … Sau đó tùy từng vấn đề thực hiện loại DBMS làm sao (vd: MySql, MongoDB, …) cơ mà ta thừa kế với implement đông đảo cách tiến hành này. Tính hóa học nhiều hình của OOPhường được áp dụng tương đối nhiều vào nguyên tắc này.

Tổng kết

SOLID là 5 lý lẽ cơ bạn dạng trong vấn đề thiết kế ứng dụng. Nó giúp bọn họ tổ chức bố trí các function, method, class một bí quyết đúng chuẩn hơn. Làm sao để kết nối những yếu tố, module với nhau.

Rõ ràng, dễ hiểu

Teamwork là điều cấp thiết tách trong xây dựng. Áp dụng SOLID vào công việc bạn sẽ tạo ra những hàm tốt, dễ nắm bắt rộng. Giúp cho mình với người cùng cơ quan đọc phát âm code của nhau tốt hơn.

Dễ cố đổi

SOLID giúp tạo nên những module, class rõ ràng, mạch lạc, mang ý nghĩa độc lập cao. Do vậy lúc bao gồm sự đòi hỏi biến hóa, mở rộng từ quý khách hàng, ta cũng ko tốn vô số công sức nhằm triển khai câu hỏi chuyển đổi.

Tái sử dụng

SOLID khiến cho những lập trình sẵn viên Để ý đến nhiều hơn nữa về kiểu cách viết phần mềm, vì thế code viết ra sẽ mạch lạc, dễ hiểu, dễ dàng sử dụng.