When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine. — Pablo Picasso
Maxim Dubrovinhas quoted9 years ago
Important developments often arise out of analogies. By comparing a topic you understand poorly to something similar you understand better, you can come up with insights that result in a better understanding of the less-familiar topic.
Anastezia Mlekohas quoted2 years ago
Floyd, Robert W. "The Paradigms of Programming." 1978 Turing Award Lecture. Communications of the ACM, August 1979, pp. 455–60. This is a fascinating discussion of models in software development, and Floyd applies Kuhn's ideas to the topic.
Vitalyhas quoted3 years ago
without the abstractive power of classes, complex programs would be impossible to manage intellectually
Vitalyhas quoted3 years ago
The underlying message of all these rules is that inheritance tends to work against the primary technical imperative you have as a programmer, which is to manage complexity.
Vitalyhas quoted3 years ago
Don't settle for the first design that occurs to you. Collaborate. Strive for simplicity. Prototype when you need to. Iterate, iterate, and iterate again. You'll be happy with your designs
Vitalyhas quoted3 years ago
When in doubt, use brute force.
— Butler Lampson
Vitalyhas quoted3 years ago
Popular Design Patterns
Pattern
Description
Abstract Factory
Supports creation of sets of related objects by specifying the kind of set but not the kinds of each specific object.
Adapter
Converts the interface of a class to a different interface.
Bridge
Builds an interface and an implementation in such a way that either can vary without the other varying.
Composite
Consists of an object that contains additional objects of its own type so that client code can interact with the top-level object and not concern itself with all the detailed objects.
Decorator
Attaches responsibilities to an object dynamically, without creating specific subclasses for each possible configuration of responsibilities.
Facade
Provides a consistent interface to code that wouldn't otherwise offer a consistent interface.
Factory Method
Instantiates classes derived from a specific base class without needing to keep track of the individual derived classes anywhere but the Factory Method.
Iterator
A server object that provides access to each element in a set sequentially.
Observer
Keeps multiple objects in synch with one another by making an object responsible for notifying the set of related objects about changes to any member of the set.
Singleton
Provides global access to a class that has one and only one instance.
Strategy
Defines a set of algorithms or behaviors that are dynamically interchangeable with each other.
Template Method
Defines the structure of an algorithm but leaves some of the detailed implementation to subclasses.
Vitalyhas quoted3 years ago
Common patterns include Adapter, Bridge, Decorator, Facade, Factory Method, Observor, Singleton, Strategy, and Template Method.
Vitalyhas quoted3 years ago
Classes and routines are first and foremost intellectual tools for reducing complexity. If they're not making your job simpler, they're not doing their jobs.