Click here to Skip to main content
15,887,683 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
AnswerRe: Design Architecture for developing a UML Class Diagram Editor Pin
jschell11-Dec-12 9:35
jschell11-Dec-12 9:35 
GeneralRe: Design Architecture for developing a UML Class Diagram Editor Pin
Daskul11-Dec-12 14:02
Daskul11-Dec-12 14:02 
GeneralRe: Design Architecture for developing a UML Class Diagram Editor Pin
Pete O'Hanlon11-Dec-12 20:44
mvePete O'Hanlon11-Dec-12 20:44 
QuestionWhat's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak8-Dec-12 13:21
Robb Ryniak8-Dec-12 13:21 
AnswerRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Eddy Vluggen9-Dec-12 6:36
professionalEddy Vluggen9-Dec-12 6:36 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak9-Dec-12 12:15
Robb Ryniak9-Dec-12 12:15 
AnswerRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
jschell9-Dec-12 8:47
jschell9-Dec-12 8:47 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak9-Dec-12 12:14
Robb Ryniak9-Dec-12 12:14 
jschell wrote:
I have been doing it for 40 years and have used Fortran, Basic(various flavors), Pascal, assembly (different flavors), C, C++, C#, Java, Perl, various SQL
dialects and various scripting languages.

Awesome. Same here, pretty much. You just have 8 years on me Wink | ;)

jschell wrote:
You failed to mention maintenance costs and total life cycle costs in anything you said.

You're right... I didn't say anything about that.

jschell wrote:
Which might be because you don't understand maintenance costs an life cycle costs.
 
The fact that you understand the code means nothing it terms
of whether someone else can understand it. And in the vast majority of professional programming software that actually reaches production will require that someone else besides the original programmer must understand it at some time.

While I didn't mention anything about total cost for maintenance, it doesn't mean I don't understand or value the need for maintainable code from a cost perspective, nor does it mean that I don't value having code that is readable by others. On the contrary, maintainability, TCO and readability are all extremely high on my list of what I value. I didn't mention it in my OP simply because it is... in my opinion... secondary to design and implementation that considers performance (accuracy and stability assumed) as the higher priority. If I am faced with the choice between code that executes twice as fast and code that is twice as readable, I choose performance every time... but then comment appropriately.

For example, I had a project about 10 years ago in C++ that required some software-based imaging processing. Performance was really critical, and the math could have been done step by step, calling various other functions to make the code really, really readable... but putting a particular transformation on ONE LINE helped with compiler optimization to the point where it ran literally 10x faster. So, I wrote it BOTH ways... the "easy to read" way that perfectly expressed the logic of the algorithm, and the ugly but fast-executing way, and left the "easy to read" way as a comment block in order to aid future coders in seeing what was actually going on.

In contrast, there's a fairly popular game out right now that is written (AFAIK) in a highly tiered OO approach, and it's charming 8-bit graphics and blocky environments that are comparable to the technology of the classic DOOM/DOOM II era in the 90's, is so inconsiderate of performance issues that it can bring a Core i7 with dual top-end graphics cards to its knees... that one's a real head-scratcher.

jschell wrote:
Your large method idea was one that even structured programmers rejected long ago and that rejection is further demonstrated by the wide and rapid acceptance of Object Oriented programming.
 
As with all things this is not an absolute mandate in that every thing must be broken into smaller pieces but the vast majority should. And at least in my experience code that fails to do this generally is often obviously not based on an OO design.

I wasn't trying to say that large methods were specifically desirable, only that they shouldn't be shunned as "don't ever ever do this" kind of practices. IMO, a given construct should be used when it's appropriate... always. If a piece of functionality would benefit from a monolithic approach, it should be done that way. If a piece of functionality benefits from an highly tiered OO approach, then it should be done that way. I'm advocating a more liberal approach to design and implementation, not a specifically monolithic approach. The right approach for the right situation. Period.

jschell wrote:
Because performance is most significantly impacted by requirements and design. Not implementation.

I don't agree at all. I think any design (good or bad) can be implemented with either fast or slow executing code, and my original point was that it seems the practices being widely adopted in the past 5 to 10 years are definitely not in favor of speed of execution, and I don't understand that.

jschell wrote:
Huh? Because it costs money to produce software. It costs money to fix bugs in production. Because it costs money if one losses market share due to long lead times.

Now here, you make a good point that I agree with. I just don't know that a more liberal approach (as I'm advocating) is necessarily the anticedent of time efficiency... though it can be, of course. I just don't think it needs to be that way.

modified 10-Dec-12 8:27am.

GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
jschell10-Dec-12 8:24
jschell10-Dec-12 8:24 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak10-Dec-12 10:14
Robb Ryniak10-Dec-12 10:14 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
jschell11-Dec-12 9:32
jschell11-Dec-12 9:32 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak11-Dec-12 15:34
Robb Ryniak11-Dec-12 15:34 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
jschell12-Dec-12 8:18
jschell12-Dec-12 8:18 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak12-Dec-12 9:07
Robb Ryniak12-Dec-12 9:07 
AnswerRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Keld Ølykke9-Dec-12 9:41
Keld Ølykke9-Dec-12 9:41 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak9-Dec-12 12:21
Robb Ryniak9-Dec-12 12:21 
AnswerRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Pete O'Hanlon10-Dec-12 8:49
mvePete O'Hanlon10-Dec-12 8:49 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak10-Dec-12 10:10
Robb Ryniak10-Dec-12 10:10 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Pete O'Hanlon10-Dec-12 22:13
mvePete O'Hanlon10-Dec-12 22:13 
GeneralRe: What's the deal with various coding practices and "Code Smell" these days?? Pin
Robb Ryniak11-Dec-12 11:41
Robb Ryniak11-Dec-12 11:41 
Questionexample of well designed softwares Pin
Giuseppe Tollini6-Dec-12 2:56
Giuseppe Tollini6-Dec-12 2:56 
AnswerRe: example of well designed softwares Pin
jschell6-Dec-12 9:17
jschell6-Dec-12 9:17 
AnswerRe: example of well designed softwares Pin
Eddy Vluggen7-Dec-12 2:07
professionalEddy Vluggen7-Dec-12 2:07 
AnswerRe: example of well designed softwares Pin
Keld Ølykke9-Dec-12 9:45
Keld Ølykke9-Dec-12 9:45 
QuestionWeb services theory Pin
Bytescream3-Dec-12 10:24
Bytescream3-Dec-12 10:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.