I am also coding for many years, although it is a failure, but also a bit of failure, but I am in China, most programmers are like me, in the road has been a detour, if you want to become an architect, you must go the right way, or farther away from the target, are working hard programmers, Do you have any of the following feelings?
First, my work is on time to complete the tasks entrusted to me, as to how the code to write, know there is room for improvement, but no time to improve, the key is not to give the time ah.
Second, I found that my level is always not keep pace with the progress of technology, there are too many want to learn things to learn, jquery used more people recently ah, heard that the recent MVC comparison Fire, and LINQ, heard that Microsoft has Silverlight again ...
Third, I found that although I have worked for several years, in addition to Non-stop Coding,ctrl+c and CTRL + V more proficient, but the coding level has not improved, or an ordinary programmer, but someone has done the architect.
Four, worked for several years, want to change jobs, the results of the interview examiner asked some of the data structure, what garbage collection, what design patterns, and so on things, although seen, but usually do not need to see also forget, can not answer, the results of the examiner said I base too bad ...
There is no, if not, then do not have to look, you must be Montana, or already understand the way, hehe.
If there is, congratulations, you enter the learning misunderstanding, if you want to advance on the technology, you can not always coding, in order to complete the needs and work, must be in the coding at the same time, let our thinking, the level is constantly improving.
There are several stages of writing code to go through. First, you have to learn the basics of object-oriented, if even forget this, then your programming path is doomed to do the original primary duplication.
Many programmers know the concepts of classes, methods, abstract classes, interfaces, and so on, but why object-oriented, where the benefits are and what problems to solve. Just understand the concept, is to express not clear, then in the actual work also can not use, after a period of time, object-oriented things again blurred, the result is that most programmers in object-oriented language to do process-oriented work, so to learn object-oriented, first of all should understand object-oriented purpose.
What is the purpose of the object orientation.
Development of language is evolving, from machine language, to assembly, to high-level language, to the fourth generation language; Software development methods are evolving, from process-oriented, object-oriented to aspect-oriented. While these are evolving, the goals they pursue have remained unchanged:
1. Reduce the complexity of software development
2. Improve the efficiency of software development
3. Improve the quality of software: maintainability, scalability, reusability and so on.
The development of language, development methods in the development of 1, 22 has made great progress, but for the 3rd, we can not rely on the development of the method itself to solve.
Improve software quality: maintainability, scalability, reusability, and so on, more specifically, is high cohesion, low coupling, object-oriented is to solve the 3rd problem. So to become a good programmer, the most bypassed is the object-oriented. Second, to learn the object-oriented, you must learn design patterns.
Suppose we understand the object-oriented purpose, the concept, but we found in the process of coding, our object-oriented knowledge seems to have been not useful, in fact, the truth is very simple, because we do not know how to use, like swimming, we have understood the benefits of swimming, as well as several swimming posture, dog planing, Backstroke, breaststroke, freestyle, but we still can't swim ....
So with these basic principles it's not going to work, we have to have some finer principles to know about our designs, this has a more basic object-oriented five principles, and put these principles more detailed application to the actual, solve the actual problem, this is the design pattern, so to learn oo, must learn design patterns, Learning design patterns, according to the master, is the success of many areas of human endeavor to solve the successful program from various models, an important goal of education is to transfer the knowledge of the model generation by generation. So learning design patterns, like we're watching the world's top swimming races, we're crazy and fascinated by it. Iii. Learning Design Patterns
Just as we do not want to see other people perform, we have to learn to swim by ourselves, which is what we aim to do.
When we read a few design patterns, we are excited for the spirit, in the new coding, we always want to work hard to learn the design pattern, but often in the misuse mode, toss half a day to find is in the pants scratch ...
After learning the design patterns, we were confused, it feels like these patterns are just too much, and many times we can't tell the difference between these patterns, and we understand a fatal thing in the design process--over design, because design patterns require us to be highly scalable and highly reusable, but at the beginning of the request, We are not gods, we do not know where to expand and where to reuse, and the past experience must be correct, in addition to relying on past experience. So we are not even afraid to use design patterns, but we have been using the process-oriented approach in implementing the requirements. Iv. Learning and reconstruction
Wonderful code is how to think out, than to see the wonderful code is more exciting, so we began to think, these masters do not have to work, the need to have no leadership requirements to finish time, only to design wonderful code as the standard to carry out the work. This kind of work is too good, also impossible, the boss does not want AH. Even if he had the ideal conditions, he would have designed the perfect code from the start. Nor is it possible, unless he is God, to anticipate all the needs of the future at the outset, and if none of these conditions, how they write the wonderful code.
Joshua Kerievsky in the famous "model and XP" (included in the Book of Extreme Programming Research), it is clear that in the design of early-stage use patterns often lead to over engineering (over-engineering). This is a brutal reality, the pursuit of perfection alone can not write practical code, and "Practical" is the overriding element of software.
In refactoring-improving the design of existing code, it is mentioned that by refactoring (refactoring) you can find the balance point of change. You will find that design is no longer a prerequisite for all actions, but is gradually emerging throughout the development process. In the system building process, you can learn how to strengthen the design, during which the interaction will allow a program to maintain a good design in the development process.
To sum up, we use design patterns in the early stages of design, often lead to excessive design, so should be throughout the development process, the entire requirements change process in the ongoing restructuring of the current code, so that the program has maintained a good design, it can be seen that the development process needs to be reconstructed, otherwise no matter how good the original design, As the need changes, it will become a heap of bad code, difficult to maintain, difficult to expand. Refactoring is a process that modifies code to improve the internal structure of the program without altering the external behavior of the code. The goal of refactoring is to design patterns, more essentially, to make the structure of the program more reasonable, thereby improving the maintainability, scalability and reusability of the software.
"Refactoring-improving the design of existing code" is also Martin Fowler and other masters of the works, the Software engineering field of the Super classic masterpiece, and another masterpiece "design mode" and called "soft workers double", you have to read AH. On the way to a good software designer
Through design patterns and refactoring, what we have learned and the coding of our work is finally combined, we can use object-oriented thinking in our work and start to learn refactoring, which is like swimming, we read all kinds of top swimming competitions, understand the rules, the methods and techniques used by celebrities, Now is the time to go home to the village next to the river to practice, training also need to have a coach, recommend another classic book called "Refactoring and Mode", citing his opening introduction, the book groundbreaking in-depth revealed the two key software development technology, the relationship between refactoring and model, explained that through refactoring to achieve the model to improve the existing design, tend to be better than the early use patterns in new designs. This book not only demonstrates an innovative way of applying patterns and refactoring, but also helps readers to understand refactoring and patterns in the context of actual combat. This book is the coach we need, and it's worth reading. Six, there is no end, only perseverance and dedicated research and efforts.
After a few years of perseverance, and finally learned to use a variety of flexible models, we do not need to deliberately want to use what mode, how to reconstruct. The goal of the program, is maintainability, scalability, reusability, has become a programming habit, a habit of thinking, as we have been in contact for several years after swimming, we do not have to deliberate to consider how to allow themselves to float up, backstroke and breaststroke difference ... But jumped into the water, and naturally swam up and swam towards the other shore. But to compare with the master, hey, we still have a long way to go, it may not be the master, but whether or not we can be masters, we are on the right path to becoming a master, and we are not the same as other programmers, because they do not change their level for many years, they just repeat the wheel, The only thing that's faster than you is CTRL + C and CTRL + V.
The right way, as long as the stick, is closer to the goal, the future will certainly be a good architect, and the distinction between good architects, may only be a matter of time.
Original: http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html