InfoQ Homepage Design Content on InfoQ
-
Case Study: Applying Java Programming Skill to Flex
In an article published on Adobe Flex Developer Center, Bill Bejeck shares his experience creating components and enforcing separation of concerns with Flex, from a Java developer's perspective.
-
Does code become better as it approaches English?
Achieving readability and expressiveness by writing English-like code is one of the trends on the rise in today’s industry. Michael Feathers advocates for considering other alternatives that can be instrumental for improving code expressiveness. He argues that in some circumstances symbolic approach is more appropriate than the narrative one and highlights some trades-offs between them.
-
Decisions driven by productivity concerns: Reasons, implications and limitations
Often the necessity to rapidly adapt software projects to new clients’ needs results in adopting approaches focused on productivity. Reasons, implications and limitations of this were recently discussed in the blog sphere.
-
Opinion: Refactoring is a Necessary Waste
Refactoring is one of the key technical practices in the Agile developer's toolkit. Refactoring also has no measurable customer value by its very definition - it involves changing the structure (design) while maintaining the behavior. In the Lean world - anything that does not have customer value is waste, and a customer only perceives behavior/functionality and not structure.
-
Static Code Analysis can Highlight Deeper Flaws
Static code analysis (SCA) tools like those offered by FindBugs, PMD, CheckStyle, IntelliJ IDEA can help a development team track down problems and keep quality high. But when an SCA tool flags a problem, how should a team react? Vikas Hazrati's Static Code Analysis is just the Tip of the Iceberg suggested: look deeper.
-
Does Dependency Injection pay off?
There has been an interesting discussion in the blogosphere about the benefits or lack of benefits from using Dependency Injection. The question is — does Dependency Injection really pay off?
-
InfoQ Presentation: Eric Evans on DDD - Strategic Design
In this talk, Eric Evans introduces two broad principles for strategic design. 'Context mapping' addresses the fact that different groups model differently and 'Core domain' distills a shared vision of the system's core domain and provides a systematic guide to when good enough is good enough versus when to push for excellence.
-
Duck Typing and Protocols vs. Inheritance
A recent debate on the RubyTalk list asked where to use is_a? vs respond_to? This highlights situations where objects respond to the same interface, but don't share any superclasses. We look at this debate and solutions in other languages such as Smalltalk, Erlang, and Scala.
-
Martin Fowler unveils details of his upcoming DSL book
Martin Fowler unveiled some details about his upcoming book on DSLs through his Work In Progress gateway. In the draft of its introductory part, Fowler gives an example of a Domain Specific Language case and provides some new insights on DSLs, their implementation and use.
-
Designing for flexibility and robustness: Asynchronous message model, OOP and Functional Programming
According to Pragmatic Programmers it is preferable in OOP to avoid design based on returning values. Michael Feathers argues that it may also be better to use the asynchronous message model that might be instrumental for improving adaptability and robustness. This maps well to the Erlang model though opposing some of the principles of pure functional programming.
-
InfoQ Presentation: Eric Evans on Domain Driven Design - Putting the Model to Work
Why bother with models? Eric Evans explains that the most critical complexity of most software projects is understanding the business domain itself. In this talk Evans talks about the foundations of Domain-Driven Design and how to make a domain model truly pull its weight and positively transform a project.
-
Preserving flexibility while using Active Record pattern
Bob Martin believes that Active Record pattern that maps data structures to objects may be a source of confusion. Even though it appears to be an object, it actually is a data structure, vulnerable to the addition of new types. To preserve the flexibility, Bob Martin suggests separating Active Record from the application, so that the latter can be designed and structured solely around objects.
-
OOP: Thinking beyond verb/noun metaphor to yield a better design
In OOP, objects are traditionally coupled with actions that determine their behavior, implemented as objects’ methods. Reg Braithwaite argues that, in some cases, it may be relevant to dissociate the two. Traditional approach to OOP is also questioned by Buko Obele who advocates for going beyond the verb/noun metaphor that is often used to approach object oriented design.
-
Debate: Why are most large-scale websites not written in Java?
Nati Shalom of GigaSpaces recently asked why most large-scale websites were written in languages other than Java. This question touched off a large debate in the Java community, and InfoQ took the opportunity to learn more about the major viewpoints surrounding this issue.
-
Respect Demeter's Law through Rails Plugin
The Law of Demeter or Principle of Least Knowledge is a design guideline for developing software. It's not rare to see common Rails practices violating it. Luke Redpath brings a way to remedy this by providing Demeter's revenge plugin.