Win a copy of Spring in Action (5th edition) this week in the Spring forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Bear Bibeault
  • Devaka Cooray
  • Liutauras Vilda
  • Jeanne Boyarsky
Sheriffs:
  • Knute Snortum
  • Junilu Lacar
  • paul wheaton
Saloon Keepers:
  • Ganesh Patekar
  • Frits Walraven
  • Tim Moores
  • Ron McLeod
  • Carey Brown
Bartenders:
  • Stephan van Hulst
  • salvin francis
  • Tim Holloway

4 Rules  RSS feed

 
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello Corey

Congrats on new book!!!

Why adhering to good design principles so hard? How can we formalize good desings process in to software development lifecycle?

Thanks.

 
Sheriff
Posts: 12747
210
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Question for you: why do you think there's a need to "formalize" good design process in the software development lifecycle?

To me, that's kind of like asking "How do I formalize brushing my teeth in my bedtime routine?"  Really? Is there really a need to "formalize" doing something that's good for you?
 
Junilu Lacar
Sheriff
Posts: 12747
210
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think a better question might be: "How do I make a habit of adhering to good design principles?" which isn't unlike asking "How do I make a habit of brushing my teeth before I go to bed?"
 
Junilu Lacar
Sheriff
Posts: 12747
210
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The answer to both those questions, BTW, is simple: Discipline.
 
Himanshu Ahuja
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think due to lack of better words you did not understood my question, what i meant to say was we know following good design principles is good but we hardly see the discipline to apply these in real world and good application is very subjective and depends on eexperience level of developers, that is why question around ideas for formalizing application of design processes via tooling or rulebook or other means.
 
Junilu Lacar
Sheriff
Posts: 12747
210
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Himanshu Ahuja wrote:... we hardly see the discipline to apply these in real world and good application is very subjective and depends on eexperience level of developers, that is why question around ideas for formalizing application of design processes via tooling or rulebook or other means.


I still don't know if "formalize" is the right word to use in this context. The definition of "formalize" is "to make official or legitimate by the observance of proper procedure."

Are you thinking about automation? Or maybe you are thinking in terms of the opposite of "subjective," which is "objective." So maybe you're thinking of how to apply design principles in code more consistently and objectively? Is that it?
 
Himanshu Ahuja
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes and if there are any tools available to do so
 
Marshal
Posts: 6257
420
BSD
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Himanshu Ahuja wrote:...we know following good design principles is good but we hardly see the discipline to apply these in real world...


Robert C. Martin (Uncle Bob) in one of his conferences described that as "Professionalism", in this case just would be an opposite. And to grow that mentality I think you need to start to work on that early. We often see on these forums students coming along with their assignments to figure out one or another thing, and when everybody points out about some other things to improve, the usual answer(s) is, "will have in mind in the future", "will do next time", "It is fine, it is my first year in a class...".

So these habits rot to what you just described. Lack of responsibility, or maybe even irresponsibility of individual developers.
 
Ranch Hand
Posts: 854
3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Himanshu Ahuja wrote:Yes and if there are any tools available to do so


There are plenty of tools out there, like SpotBugs (successor to FindBugs) and SonarQube (with plugins), and most IDE's will support setting up coding standards and showing you when your code doesn't follow them.
 
author & creator of coderetreat
Posts: 14
6
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think an important question to ask is

"What is a good design principle?"
or perhaps
"What is a good design?"

Before we can ask about why we can't formalize them or why don't we see them happening more often. This can be an interesting discussion, but it is often context-specific and hard to get to "good design." Depending on the situation and the person, I think you'll often get differing opinions.

I like the idea of "better design" that takes into account relative benefits of different designs based on the context.

As an example, if it easier to rewrite something than to maintain it, then the definition of "quality" is suddenly changed.

Even something as simple as "no duplication" can have varying levels of adherence and return on investment. Even the definition of "duplication" can be argued .

I know this is sort of a non-answer, but I know that, in my past, I've fallen into conversations about "good design" that bordered on harmful for certain situations.
 
corey haines
author & creator of coderetreat
Posts: 14
6
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
All that being said, I do think that "better design" comes from two things:

- Understand your context, especially around the need for future change
- Apply the 4 rules of simple design (specifically naming and duplication elimination) within the context that need for change.
 
Squanch that. And squanch this tiny ad:
Download Free Java APIs to Work with Office Files and PDF
htttp://www.e-iceblue.com/free-apis.html
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!