we have some great DBAs here and they use some great Data Modelers for creating databases and code (SQL/Xojo) related to them.
now what I am looking for is how all of us design Classes that are not related to databases/tables/SQL. do we use pen/paper? whiteboard/markers? software? dont use anything and just hack at the code until we get it right?
I have been doing some of pen/paper and some hacking at it as I go along. the later is not good for anyone. or at least not in my opinion. especially if the class(es) are complicated or if there is an hierarchy of classes/subclasses that are related to each other.
and before you ask I work on 3 desktops/platforms (Mac/Linux/Win, and in order as how much I use each one). I would prefer an app on Mac but willing to accept suggestions for the other platforms.
thanks!
–sb
pen and paper for me, but then i haven’t tackled anything very difficult…
I tend to use a mind mapper during the conceptual/planning stage. Once I have a decent outline I’ll export that into a task manager or outliner and work from that during coding. I’ll update the task/outline as I encounter obstacles, have ideas, etc.
It’s all pretty fluid in practice. I develop on Mac but mostly they’re vertical apps for WIndows. I use MindNode/iThoughtsX, TaskPaper, NVAlt, occasionally Omnigraffle.
IF the classes are complicated enough, I use Curio which is a Mac app that one can think of as being a white board. I have a big monitor which helps. It is not nearly as fast as using a large real white board. But I do not have a large white board.
Sometimes the slowness of drawing things in a software program is actually helpful to the creative process at least for my brain. And the result is very neat. While I am drawing all these perfect lines and arrows and making lists and moving things around, some other part of the brain subconsciously seems to get a greater understanding of the issues involved in designing the class.
Long walks and pen & paper works for me (when its about complex classes I know will have a hierarchy).
For simple classes, thought and direct code is (usually) enough.
My mot used design tools:
- DbSchema
- StarUml
- Balsamiq