On 04/21/2013 12:29 PM, Kevin Krammer wrote:
On Saturday, 2013-04-20, James Tyrer wrote:

I have to say, that this code needs some redesign work.  Hacking is not
a good design method.  You really need to design before you code.

Well, depends on the software development model.
When one does something very new, either in problem domain or technology being
used, it is often wiser to go for a prototype - test - refine cycle instead.

A usual program will see both kinds of methologies being deployed, often
starting with the refinement cycle approach for the initial implementation or
feature set, going for a design and test approach for refactoring or rewrite.

A long standing tradition when I was in college and we had an IBM 360 that would fill up my house but was less powerful than the small box setting on the floor by my coffee table was that upper division students would informally tutor lower division students between punching those damn cards and waiting for output.

I learned a lot teaching, as I also did tutoring math. The Socratic method was often the best: "Please tell me just exactly what this section of code is supposed to do". And, it becomes obvious that they did not have a coherent idea of exactly what they wanted it to do. And, if they did have a general idea that it could be done better if a little thought was done before it was coded, or in the case here, some retroactive design changes were made to improve it -- design after the fact as it were.

So, when I say that a program should be designed before it is coded, this can occur at many levels. Programs are composed of small pieces of procedural code (even C++ programs are built on procedural code) that do the actual work. These need to be designed, rather than just hacked at, if they are to work well (they need to be canonically correct and complete for the program to be free of bugs and only design can accomplish that [I can explain this without using math jargon but it won't be short]). It also needs to be considered if they will need to interact with each other and if that needs to be designed. This type of micro design is more what I had in mind (rather than designing the whole program) and it is the type of design that I find lacking when I look at code.

You are correct about designing the whole program. You need to make a prototype to find out what is wrong with the original design ideas and what changes are needed. That is what prototypes are for -- to find design errors.

--
James Tyrer

Linux (mostly) From Scratch

--
James Tyrer

Linux (mostly) From Scratch
___________________________________________________
This message is from the kde-linux mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde-linux.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.

Reply via email to