Агар дар код ду фасли такроршаванда мавҷуд бошад, онҳо бояд дар як усул муттаҳид карда шаванд. Агар арзиши рамзбандишуда зиёда аз як маротиба истифода шавад, онро ба константи умумӣ табдил додан меарзад.
Ин барои содда кардани код ва осон кардани нигоҳдории он зарур аст, ки ҳадафи асосии OOP мебошад. Шумо набояд иттифоқро аз ҳад зиёд истифода набаред, зеро ҳамон код ҳам бо OrderId ва ҳам SSN аз санҷиш намегузарад.
Тағйироти фарогир
Маҳсулоти нармафзори аксари ширкатҳо пайваста такмил меёбанд. Ин маънои онро дорад, ки бояд ба код тағйирот ворид карда шавад, он бояд дастгирӣ карда шавад. Бо истифода аз инкапсуляция шумо метавонед ҳаёти худро осонтар кунед. Ин ба шумо имкон медиҳад, ки базаи коди мавҷудаи худро самараноктар санҷед ва нигоҳ доред. Ана як мисол.
Агар ба шумо лозим ояд, ки чизе дар он тағир диҳед, он вақти зиёдро мегирад, зеро ҳамаи қисматҳои код, ки бо фрагменти дилхоҳ алоқаманданд, бояд тағир дода шаванд.
Зимнан, ошкорбаёнӣ-пӯшиш яке аз принсипҳои СОЛИД мебошад.
Принсипи масъулияти ягона (SRP)
Принсипи дигар аз маҷмӯи SOLID. Дар он гуфта мешавад, ки "танҳо як сабабе вуҷуд дорад, ки боиси тағирёбии синф мегардад". Синф танҳо як масъаларо ҳал мекунад. Он метавонад якчанд усул дошта бошад, аммо ҳар яки онҳо танҳо барои ҳалли як масъалаи умумӣ истифода мешаванд. Ҳама усулҳо ва хосиятҳо бояд танҳо ба ин хидмат кунанд.
Арзиши ин принсип дар он аст, ки он пайвастагии байни ҷузъи инфиродии нармафзор ва кодро суст мекунад. Агар шумо ба синф зиёда аз як функсия илова кунед, он муносибати байни ду функсияро ҷорӣ мекунад. Ҳамин тариқ, агар шумо яке аз онҳоро иваз кунед, эҳтимолияти вайрон кардани дуюмаш, ки ба якум пайваст аст, зиёд аст. Ва ин маънои зиёд кардани давраҳои санҷишро дорад, то ҳама мушкилотро пешакӣ муайян кунад.
Принсипи инверсияи вобастагӣ (DIP)
Дар боло як мисоли рамзест, ки AppManager аз EventLogWriter вобаста аст, ки дар навбати худ бо AppManager зич алоқаманд аст. Агар ба шумо роҳи дигари нишон додани огоҳинома лозим бошад, хоҳ он push, SMS ё почтаи электронӣ, шумо бояд синфи AppManager-ро тағир диҳед.
Мушкилотро бо истифода аз DIP ҳал кардан мумкин аст. Ҳамин тавр, ба ҷои AppManager, мо як EventLogWriter дархост мекунем, ки бо истифода аз чаҳорчӯба ворид карда мешавад.
DIP имкон медиҳад, ки бо иваз кардани модули вобастагӣ модулҳои инфиродӣ бо дигарон ба осонӣ иваз карда шаванд. Ин имкон медиҳад, ки як модул бе таъсир ба дигарон иваз карда шавад.
Таркиб ба ҷои мерос
Ду роҳи асосии дубора истифода бурдани код вуҷуд дорад: мерос ва таркиб, ки ҳардуи онҳо бартарӣ ва нуқсонҳои худро доранд. Одатан дуюмаш бартарӣ дорад, зеро он чандиртар аст.
Ҳатто Java-и самараноки Ҷошуа Блок маслиҳат медиҳад, ки таркибро аз мерос интихоб кунед.
Принсипи ивазкунии Барбара Лисков (LSP)
Принсипи дигар аз асбоби SOLID. Дар он гуфта мешавад, ки зернамудҳо бояд ба супертип иваз карда шаванд. Яъне, усулҳо ва функсияҳое, ки бо суперкласс кор мекунанд, бояд бо зерсинфҳои он бе мушкилот кор кунанд.
LSP ҳам бо принсипи ягонаи масъулият ва ҳам бо принсипи масъулияти муштарак алоқаманд аст. Агар синф назар ба зерсинф функсияҳои бештарро таъмин кунад, он гоҳ охирин баъзе функсияҳоро дастгирӣ намекунад ва ин принсипро вайрон мекунад.