Rags To Riches
-
I'm a budding programmer looking for vital threads. Learning language and using it are 2 different things although one MUST receive it before they can express it. Grasping the basic concepts of OOD and the languages (VB,C#,C++(concepts)), learning the system classes, .net and language functional constructs (gdi,reflection,diagnostics), etc. etc. , What is(are), the single best tools to use to convert ideas into code? 1. UML?? 2. Keep reading?? 3. Keep doing?? 4. Usage of interfaces, events(delegates)?? 5. A pad and a pencil?? Any thoughts to help steer me into coding effective design, architecture, OUTPUT!!! .....TIPS .. pLeAsE Trane Lives (that's Coltrane) THANX ds:confused:
-
I'm a budding programmer looking for vital threads. Learning language and using it are 2 different things although one MUST receive it before they can express it. Grasping the basic concepts of OOD and the languages (VB,C#,C++(concepts)), learning the system classes, .net and language functional constructs (gdi,reflection,diagnostics), etc. etc. , What is(are), the single best tools to use to convert ideas into code? 1. UML?? 2. Keep reading?? 3. Keep doing?? 4. Usage of interfaces, events(delegates)?? 5. A pad and a pencil?? Any thoughts to help steer me into coding effective design, architecture, OUTPUT!!! .....TIPS .. pLeAsE Trane Lives (that's Coltrane) THANX ds:confused:
I advise you to read Refactoring by Martin Fowler. Uml and other things may be good. But I believe in iterative development. If you need something first build it however naive it can be. Then add to it, refactor it. I never build my inheritance classes at outset. I first build something, when I start to copy paste. I look for common parts to use in inheritance. Refactoring books teaches you how to this. Of course this is my opinion. Education is no substitute for intelligence. That elusive quality is defined only in part by puzzle-solving ability. It is in the creation of new puzzles reflecting what your senses report that you round out the definition. Frank Herbert
-
I advise you to read Refactoring by Martin Fowler. Uml and other things may be good. But I believe in iterative development. If you need something first build it however naive it can be. Then add to it, refactor it. I never build my inheritance classes at outset. I first build something, when I start to copy paste. I look for common parts to use in inheritance. Refactoring books teaches you how to this. Of course this is my opinion. Education is no substitute for intelligence. That elusive quality is defined only in part by puzzle-solving ability. It is in the creation of new puzzles reflecting what your senses report that you round out the definition. Frank Herbert
But doing it this way, building it first; That's what I do now. You're saying, wing it from your knowledge, base, research, etc. tied with your coding logic...putting it together and then Refactor it. How do you take a heavy architecture, that you've now created (the mistakes of design you've now issued, not having the complete answer until you've reached the end) and re-make it into something light and elegant?? Does Refactoring allow you to pull out those 'guts', allowing redesign, without upsetting the wheel that pulls the applecart...(Breaking something that's not broken, just a little slow) ds
-
But doing it this way, building it first; That's what I do now. You're saying, wing it from your knowledge, base, research, etc. tied with your coding logic...putting it together and then Refactor it. How do you take a heavy architecture, that you've now created (the mistakes of design you've now issued, not having the complete answer until you've reached the end) and re-make it into something light and elegant?? Does Refactoring allow you to pull out those 'guts', allowing redesign, without upsetting the wheel that pulls the applecart...(Breaking something that's not broken, just a little slow) ds
Lets say this. You will learn while you are coding and designing. Your mistakes will teach you. For example I am in a project now. Which uses web services from a third party. This third party publishes web services which have same interface but they have diffrent names. I have tried to implement this using interfaces in my code. It worked but it was ugly and hard to change. I changed my code to use one abstract class and factory pattern. Now it is very easy to extend my design to accommadate other web services from this third party. But first I have implemented one solution. Then I looked my solution and changed it. I have not arhictected last solution first. Of course you need some knowledge for this. Of course you never have complete answer. If you do not need to expand that application leave it as it is. It is working. But you have to maintain and extend it. Then As I have done, refactor it to simple solution. Refactoring needs unit and other tests to see that you have not broken something without meaning. Refactoring does not mean only readable simple code. Refactoring means changing your code structure without changing its capability to simple structure. Think of this. You can cross ocean with a ship or airplane. Airplane is refactored solution. It accomplishes same thing but it is faster simpler in some places. Education is no substitute for intelligence. That elusive quality is defined only in part by puzzle-solving ability. It is in the creation of new puzzles reflecting what your senses report that you round out the definition. Frank Herbert
-
Lets say this. You will learn while you are coding and designing. Your mistakes will teach you. For example I am in a project now. Which uses web services from a third party. This third party publishes web services which have same interface but they have diffrent names. I have tried to implement this using interfaces in my code. It worked but it was ugly and hard to change. I changed my code to use one abstract class and factory pattern. Now it is very easy to extend my design to accommadate other web services from this third party. But first I have implemented one solution. Then I looked my solution and changed it. I have not arhictected last solution first. Of course you need some knowledge for this. Of course you never have complete answer. If you do not need to expand that application leave it as it is. It is working. But you have to maintain and extend it. Then As I have done, refactor it to simple solution. Refactoring needs unit and other tests to see that you have not broken something without meaning. Refactoring does not mean only readable simple code. Refactoring means changing your code structure without changing its capability to simple structure. Think of this. You can cross ocean with a ship or airplane. Airplane is refactored solution. It accomplishes same thing but it is faster simpler in some places. Education is no substitute for intelligence. That elusive quality is defined only in part by puzzle-solving ability. It is in the creation of new puzzles reflecting what your senses report that you round out the definition. Frank Herbert
...Your mistakes will teach you... Persistance, tenacity, focus and self control, helping me to override my reactive frustrations which get the better of me, is key to my solutions too.... Thanx for your input Any suggested readings, on refactoring? ds :)
-
...Your mistakes will teach you... Persistance, tenacity, focus and self control, helping me to override my reactive frustrations which get the better of me, is key to my solutions too.... Thanx for your input Any suggested readings, on refactoring? ds :)
Start with Fowler's book refactoring. These are my bookmarks about Refactoring in my browser. Some of them about testing, since testing and refactoring goes hand in hand. I am a bit weak about testing and trying to improve. I am trying to improve my refactoring skills too.
Refactoring-TDD
iunknown.com UI Programming and Unit Tests
DevelopSense: Pairwise Testing
The test cases go marching two by two, hurrah, hurrah
BowGo! CMU robotics researchers develop a pogo stick that aims high
Education is no substitute for intel
-
Start with Fowler's book refactoring. These are my bookmarks about Refactoring in my browser. Some of them about testing, since testing and refactoring goes hand in hand. I am a bit weak about testing and trying to improve. I am trying to improve my refactoring skills too.
Refactoring-TDD
iunknown.com UI Programming and Unit Tests
DevelopSense: Pairwise Testing
The test cases go marching two by two, hurrah, hurrah
BowGo! CMU robotics researchers develop a pogo stick that aims high
Education is no substitute for intel
-
I'm a budding programmer looking for vital threads. Learning language and using it are 2 different things although one MUST receive it before they can express it. Grasping the basic concepts of OOD and the languages (VB,C#,C++(concepts)), learning the system classes, .net and language functional constructs (gdi,reflection,diagnostics), etc. etc. , What is(are), the single best tools to use to convert ideas into code? 1. UML?? 2. Keep reading?? 3. Keep doing?? 4. Usage of interfaces, events(delegates)?? 5. A pad and a pencil?? Any thoughts to help steer me into coding effective design, architecture, OUTPUT!!! .....TIPS .. pLeAsE Trane Lives (that's Coltrane) THANX ds:confused:
I nearly always make an interface for a class, because this keeps you thinking about what the class should do, rather than the implementation. Another advantage is that a class can be derived from multiple interfaces, so cunning class-hierachies are possible. Develop, develop, develop.... Books: Design Patterns for C#!!! Implement classes for Standard Things, Login, Database Access, Controls and implement them a common way, not specialized. Split your project into logical items: Login, MdiForm, Menu {ToolBar, Treemenu, MainMenu}, Reports, MainInfo, InfoLists, Searching, New and Edit, .... Parts {Bureau, Production, ...} and split it. Most people think in a one-dimensional way (a simple line) but most programming things are Multi-Dimensional Tree-Structures!!! and trees aren't so simple to keep in mind... You could also have a look at the Document-View Architecture in C++. There is shown how to split Data from the View of the Data. I don't use UML because I just not used my time to learn a UML-Programm but if you can, use it! Good luck! Stefan Werdenberg, www.adwise.ch