#Software-Design
26 notas · última:
Refactoring Catalog
The post lists refactorings the author plans to cover in Tidy Together, argues that refactorings are reversible in both directions, and groups them by whether they change access and invocation or the arrangement of state and logic.
Good programmers worry about data structures and their relationships
The piece argues that good software starts with the data model, because clear data structures make code easier to design, maintain, and extend, and can replace complexity in logic.
Software Design is Knowledge Building
The article argues that software design is about building a shared theory of the system. When the original designer leaves, the team loses the mental model needed to modify the code safely.
Let's talk: SOLID Principles 🇬🇧
The page explains the five SOLID principles with short code examples, showing how single responsibility, open/closed design, substitution, interface segregation, and dependency inversion reduce coupling and support change.
Keeping cross-cutting concerns out of application code
Mark Seemann refactors a Polly-coupled API class into application code with zero third-party dependencies, moving fault tolerance into a Decorator at the Composition Root.
Domain-Driven Design meets Functional Programming
Interview with Scott Wlaschin on why DDD's demand for composable, autonomous subsystems fits functional programming better than OO does in practice.
I Never Want to Use Third-Party Software Again
The essay argues that software is moving toward hyperpersonalization: people will increasingly tune tools, workflows, and content for themselves rather than rely on uniform third-party products.
How to Improve Your Programming Skills by Building Games
The article argues that building games teaches programming through systems thinking, event-driven code, performance, debugging, input handling, design, and creative problem solving.
Skip to the end
The article argues that AI flips old software assumptions: developers should stop building tools that force users to model problems and start delivering the outcomes directly, such as organizing content, executing rules, and writing messages.
Continuous Architecture Principles
The post outlines continuous architecture as a shift toward evolving shared design, with decisions guided by quality attributes, technical leadership, feedback loops, and architecture that supports delivery and change.
Putting SOLID into Perspective
The post treats SOLID as a useful but limited heuristic, not a set of rules, and compares it with CUPID and other design tools like RDD, GRASP, DRY, code smells, and Tell, Don’t Ask.
SOLID: The First 5 Principles of Object Oriented Design
The article defines SOLID and explains each principle with PHP examples, showing how they improve extensibility, reduce coupling, and keep classes focused as software grows.
CUPID - for joyful code
The page argues that code becomes more pleasant to work with when it is composable, follows Unix philosophy, is predictable, idiomatic, and domain-based, with each quality reinforcing the others.
What the heck is SOLID?
The post explains SOLID as five design principles for cleaner, more maintainable object-oriented code, then walks through each principle with C# examples and refactorings.
Dependency Inversion vs. Dependency Injection
The article distinguishes dependency inversion as a principle that favors abstractions over concrete implementations, and dependency injection as a pattern that supplies those dependencies at runtime.
Solutions Architect Tips - The 5 Types of Architecture Diagrams
The article argues that architecture diagrams should match the audience and purpose. It outlines five types—flow, service, persona, infrastructure, and developer—and explains when to use each one.
Aspects of a Software Design to Make Our Lives Easier
The page says software design is about isolation, but provides no further explanation in the captured text.
Principles for programming beautiful code
The article argues that code beauty is hard to define, but points to integrity, usability, innovation, and brevity as qualities that can make software and the process around it feel beautiful.
9 Anti-Patterns Every Programmer Should Be Aware Of
The article lists recurring programming anti-patterns and explains how to spot them, why they hurt design and progress, and when to prefer simpler, evidence-based choices instead.
Understanding the Four Rules of Simple Design
The book draws lessons from coderetreat workshops and Conway’s Game of Life to explain Kent Beck’s four rules of simple design and how they support flexible, adaptable software.
Coding Principles Every Engineer Should Know
The author lists personal engineering principles: be paranoid, avoid leaky abstractions, keep designs simple, defer optimization, fix bugs at the root, question assumptions, think long term, care about code, and accept software trade-offs.
New Interview Questions for Senior Software Engineers
Scott Hanselman compiles senior-level interview questions centered on software design, trade-offs, concurrency, testing, maintainability, and problem solving, while arguing that conversation and judgment matter more than trivia.
SOLID: Part 1 – The Single Responsibility Principle
Explains SRP as the rule that a class should have one reason to change, tied to one actor. It shows how separating presentation, persistence, and business logic reduces coupling and change impact.
The Traveling Consultant Problem
He argues that consultants see software shops at their worst, so their judgments are skewed by broken codebases. Rails and Ruby are sharp tools that reward craft and can also hurt careless users.
The five programming books that meant most to me
The author says most programming books age quickly, while a small set of books shaped his coding style by focusing on durable principles, architecture, problem framing, and writing.
Design Pattern não é receita de bolo – Parte 01
O artigo inicia uma série sobre Design Pattern e defende que padrões devem ser escolhidos conforme o contexto, não decorados. Também organiza padrões em criação, estruturais e comportamentais e indica leituras para estudo.
