П’ять принципів SOLID на реальних прикладах із ICanUp: Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle та Dependency Inversion Principle. Одна практична публікація на кожен принцип, без абстрактних прикладів із тваринами та геометричними фігурами.
На реальному прикладі ContentBlockSearchTextObserver і ContentBlockSearchTextExtractor показую, чому Single Responsibility Principle не про маленькі класи, а про одну чітку причину для зміни.
На реальному пошуку ICanUp показую Open/Closed Principle: нові типи пошуку додаються окремими providers, а спільний SearchPage продовжує працювати через один contract без type-specific умов.
На трьох реальних прикладах з ICanUp пояснюю Liskov Substitution Principle: коли реалізації справді можна підміняти через один contract, чому Decorator теж може залишатися взаємозамінним і чому однаковий interface ще не гарантує однакової поведінки.
На реальних прикладах ContentBlocks та Analytics у ICanUp пояснюю Interface Segregation Principle: код не повинен залежати від методів і можливостей, які йому не потрібні.
На реальних прикладах Analytics, IndexNow і Media в ICanUp пояснюю Dependency Inversion Principle: application code залежить від contracts, а MySQL, HTTP і FFprobe залишаються деталями infrastructure.