<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software Design on RAVR Lab</title>
    <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/</link>
    <description>Recent content in Software Design on RAVR Lab</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 30 Apr 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Design Principles</title>
      <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/design_prncpls/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/design_prncpls/</guid>
      <description>Actually usable:&#xA;Separation of Concerns EAFP — it is easier to ask for forgiveness than permission Blurry:&#xA;SOLID (OOP-related) KISS — keep it simple stupid YAGNI — you ain&amp;rsquo;t gonna need it </description>
    </item>
    <item>
      <title>Gang of Four (23 OOP patterns)</title>
      <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/gof/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/gof/</guid>
      <description>Software design patters are reusable solutions to common problems that arise during software development.&#xA;The most popular book on that matter is:&#xA;Design Patterns: Elements of Reusable Object-Oriented Software (1994)&#xA;(also known as «Gang of Four»)&#xA;Patterns from Gang of Four:&#xA;Creational:&#xA;Factory Abstract Factory Builder ProtoType Singleton Structural:&#xA;Adapter Bridge Composite Decorator Facade Flyweight Proxy Behavioural:&#xA;Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor Other related patterns:</description>
    </item>
    <item>
      <title>OOP terminology</title>
      <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/oop/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/oop/</guid>
      <description>OOP Terminology Classes:&#xA;Class — blueprint for creating objects. Instance — general «concept» of being an object of class. Object — actual entity in memory. Abstract Class (vs Concrete Class) — class that cannot be instantiated (Python: ABC and @abstractmethod). Can contain abstract methods. Subclasses of abstract class are required to provide implementation for abstract methods. Subclass (Derived Class) — class that interits from Superclass (Base class). Metaclass — class which instances are classes.</description>
    </item>
    <item>
      <title>Software Architectures</title>
      <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/architectures/</link>
      <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
      <guid>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/architectures/</guid>
      <description> Software Architectures:&#xA;Layered Onion Hexagonal (Ports and Adapters) Microservices Event-Driven GUI Architectures:&#xA;Paradigms:&#xA;Immediate mode (ImGUI) Retained mode (Qt) MVC variants:&#xA;Model View Presenter Model View Controller (MVC) Model View View-Model Model View Adapter Model View Update (Elm architecture) Exotic:&#xA;RP and FRP (Reactive), 1-way-binding, 2-way-binding Lisp CLOS Erlang BEAM Approaches:&#xA;Clean Architecture Domain-Driven Design Imperative shell, Functional core </description>
    </item>
    <item>
      <title>Antipatterns</title>
      <link>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/antipatterns/</link>
      <pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate>
      <guid>http://ravrlab.ru/en/cs/progr_and_sdes/csdsgn/antipatterns/</guid>
      <description>Main:&#xA;Spaghetti code (poorly structured code architecture, confusion, complexity for understanding) Gold hammer (overuse of patterns where they are not appropriate) Magic numbers (using numbered constatns to identify data — without any semantics) overly-Hard code (program is unportable to other devices) overly-Soft code (excessive tuning of program is allowed) Accidental complexity (complexity that comes not from business domain, but from the coding approach) Boat Anchor (unusable parts of program are left in the code) Reinventing the wheel (ignoring already existing, more superior solution) Lava flow («I don&amp;rsquo;t know how it works, but it works») Programming by permutations (mindless games with +1, -1 and such) Blind faith (insufficient check of outer world data) Mindless commenting (non-informative comments) God Object (object that stores too many functions/data of various usage scenarios) Code smells (symptoms that there might be smth bad with the code):</description>
    </item>
  </channel>
</rss>
