DEV Community

Discussion on: What Are The Best Software Engineering Principles?

Collapse
 
rcosteira79 profile image
Ricardo Costeira

Not really a fan of big upfront design. I prefer a "just enough" upfront design approach to get started, and then design as the need to do so arises. A big upfront design has the tendency of making future changes difficult, and "change" is the one constant in software development.

Regarding all the other principles, I have the same opinion as Frank Puffer a few comments above: you should know the principles and adhere to them, but you have to strive for that sweet spot of balance between them.

Collapse
 
jonathanhiggs profile image
Jonathan Higgs

I find "just enough" design + SOLID leads me to code that does what it needs to, but the abstractions are clean enough that there are enough places for me to expand some part to deal with changes (more likely more details) to the specifications

Collapse
 
rcosteira79 profile image
Ricardo Costeira

Exactly :)

Collapse
 
w3bist profile image
Webist

Zero upfront design here.

Covering following roles does the job.

  • Interface class
  • A Machinery Object (a do'er)
  • A Consumable Object (e.g. input)
  • An InterActor Object (e.g. adapter, handler)

All class properties private, no getter-setter and other magic tricks.