#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2004
    Location
    GA
    Posts
    17
    Rep Power
    0

    Program Design Help


    Hi, I've done a bit of programming for several years now. But I've finally started on a big project, rather than the small hack ups I have done in the past, and I'm starting to get lost in my own code because I don't know how to model my program before writing code.

    Normally I'll think of what i want then write down a few ideas on how to do it, then just code. But with a bigger project, I think this method is too primitive. I need a better way of planning how to do my project.

    So I'm asking for some good references (books, website, your personal tips, etc) on programming design and code modeling etc....

    Thanks
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Loyal (3000 - 3499 posts)

    Join Date
    May 2004
    Posts
    3,417
    Rep Power
    887
    Oh that's a big topic. What programming language are you using?
    I no longer wish to be associated with this site.
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Jul 2005
    Location
    Bay Area, California
    Posts
    841
    Rep Power
    1682
    The core of the problem with large systems is that you need to manage the interactions between code. This isn't an area taught well, as algorithms focus on theoretical efficiency and small projects have little complexity. The industry has tried to find good solutions (e.g. component-/service-/object- oriented models), though its always been a challenge. Many of the programming languages, like Java, don't do a good job of bringing interactions to the forefront of the thought process. Alan Kay's work on pure a Object-Oriented model was one of the first that tried to really tackle it well, but syntax is incredibly hard to perfect. I would say that large scale interactions is the hardest part in development, and while always causing challenges its rarely appreciated.

    Because there are a lot of different programming models, I agree that we need to know the language you're working in. The language's syntax, feature support, and community promotes certain approaches over others. Its important to understand one approach, but expand into learning the others as well.
  6. #4
  7. No Profile Picture
    Banned
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2009
    Posts
    23
    Rep Power
    0
    Program design is really important for all. Its design attract everybody for your program. People always interested in good design program.
  8. #5
  9. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2004
    Location
    GA
    Posts
    17
    Rep Power
    0
    To answer your questions, I'm coding this app in mostly python.

    I'm creating a kanji memorization 2d game (desktop client, not a web app). I've been utilizing some C libraries too, but that shouldn't change the design too much I don't think.

    Hope this helps, and thanks.
  10. #6
  11. No Profile Picture
    Contributing User
    Devshed Loyal (3000 - 3499 posts)

    Join Date
    May 2004
    Posts
    3,417
    Rep Power
    887
    Well I guess separation of concerns would be a language neutral suggestion actually, but I think that given the language you have chosen, it should be emphasized. Keep your UI and game logic separate from each other. It's real easy to mix UI and program logic together in Python and sometimes that's part of its appeal because you can just get things done, but then that's exactly the sort of thing that kills larger projects.
    I no longer wish to be associated with this site.
  12. #7
  13. Moderator Emeritus
    Devshed Supreme Being (6500+ posts)

    Join Date
    Feb 2002
    Location
    Austin, TX
    Posts
    7,186
    Rep Power
    2265
    Reading through Design Patterns is a good place to start.

    I'd also recommend getting a good book on UML...
    DrGroove, Devshed Moderator | New to Devshed? Read the User Guide | Connect with me on LinkedIn
  14. #8
  15. No Profile Picture
    Contributing User
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Feb 2004
    Location
    London, England
    Posts
    1,585
    Rep Power
    1373
    I would recommend, pretty much in this order:

    Clean Code by Robert Martin
    Agile Software Development - Principles, Patterns and Practices by Robert Martin
    Refactoring by Martin Fowler
    Test Driven Development by Example by Kent Beck
    Code Complete by Steve McConnell
    Design Patterns by Gamma etc

    If you can only read one, make it the first.

    I prefer to work in an agile, iterative way rather than try and design everything up front. Try to develop a feature at a time, evolving the program to remove duplication through refactoring.

    There are lots of resources on the web. This article by Robert Martin formed the bases of the second book in the list above, and gives a good overview of several good design principles. I also suggest googling for "agile development" and "Test Driven Development" (TDD).


    Dave
  16. #9
  17. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2004
    Location
    GA
    Posts
    17
    Rep Power
    0
    Thanks a billion guys.

    Looks like i have a few new books to load in the shopping cart.

IMN logo majestic logo threadwatch logo seochat tools logo