Code is the core http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index1.shtml
I usually see this full-picture article article, I will sweat, but this time I spent 20 minutes, I finished reading this, from the beginning, I was attracted by the author's content, structure It is very clear, and the content has blood, it can be seen, spent a lot of mind, the author's skill is unquestionable, highly recommended
Excerpt some content:
Object-oriented ideas come from abstract data types. For object-oriented, its most important improvement is to describe all things in the world, and the class describes the features of the same object, rather than in the order of execution of machine instructions, as in the translational order of machine instructions. Of course, the object-oriented code will eventually be executed in accordance with the timing, but from the perspective of programmers, object-oriented code is more focused on the interaction between objects, and multiple objects, and collaborate with each other to complete the goals. The development of object-oriented technology is also developing towards more close to our worldview. From this point of view, some people say that people who do not have programmed experience can learn more easier because he does not need to get rid of the original sequence program, but this is not necessarily true. Object-oriented is not a simple programming idea. This is our point of view, and will also be repeated in the following.
Coding is the most basic, bottom-up skill during software development, but it is also the most important skill. Any expert in the field needs a lot of time to exercise for basic skills, and carpenters need to spend a lot of time to exercise their mastery of various tools. The chef needs to practice the knife and the fire. The programmer is also the same, for us, the various characteristics of the language must be on the chest. And the management of software needs to start from the code.
Writing an excellent object-oriented code is not an easy thing, excellent OO code is like a cloud, the bad OO code makes people feel the bumps. Writing excellent OO code requires programmers to have certain self-cultivation, can look at the problem with abstract ideas, find the core of the problem and decompose the problem domain. It emphasizes the idea of a solution, but this solution is not unique.
Typical examples are design patterns, design patterns have demonstrated us to inspire, through it, we can understand how excellent code is used to solve practical problems. But isn't you have to move in the software? If you do this, then your understanding of design patterns is still not enough. I have talked to the eternal way of the architecture of Christopher Alexander in the construction industry. He told me very excited that it is really a good book, causing a deep thinking, but now there is another point of view, thinking that beauty is still invisible, should be sent from the heart of the architect. I have been thinking about this sentence. In fact, the building is used, so the most important thing is that it can bring the value, implied in the kind of living temperament, which is the cultural heritage of architects. External expression. Therefore, Christopher Alexander is in the purpose of the book, but also to find a way to summarize your own point of view, summarize your understanding of humanities. As for now, everyone has questioned his ideas, which is also a good thing, this shows that everyone has aware of the new height of the road. The building is like this, the mode in the software is the same, I have been keen on the use of research models until a certain day I suddenly woke up, and why didn't I study the cultural heritage behind it? The martial arts novels often say that there is no recruitment, the application should also arrive at this realm, and if you can use the idea of unwillingness to apply the model, why bustle in the form of the pattern?
Describe excellent OO code, but there is a more difficult thing, that is, let the entire development team produce excellent OO code. What we just said, OO is not unique to the problem, but all different excellent solutions are gathered together, it may be a bad solution, which is a problem with the style and architecture. How do you formulate a system in the team, create an atmosphere, so that excellent OO code has become the final result of the team? These problems, in my opinion, more than CMM, this problem is not able to solve it. If you can solve this problem, this team's creativity must be amazing. Case actual combat (on) http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index2.shtml
Case actual combat (below) http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index3.shtml
The entire case is very short and abnormal. The angle is very new, combined with the actual, emphasizing that software engineering is a team responsibility, not a person.
How to form a such team is more difficult than the own technology. Take a look at some of the author:
So, here we can know a reason, software engineering, project management is actually not very difficult, we see that many books will mention many problems to the height of pure theory, but in turn caused trouble to readers. Many readers' letter, asked a similar problem, I hope to introduce software engineering in my team, some people say that from demand management begins, some people say that from configuration management begins, where should I start? ? Take this example, why do we care about an exception management? Why not do demand management, or on cmm? That's more cool! The problem is here, software development is to bring value to customers, just like umlchina's famous sayings, software is used, rather than to measure. The ultimate purpose of abnormal management is to improve software quality. This is an immediate effect. It can give the boss and give your colleagues. Demand management and CMM can of course achieve this effect. The problem is that abnormal management has little cost, but it can achieve direct effects, this kind of good thing, why not do?
Ren to use http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index4.shtml
For us, the most important thing is to understand how to help object-oriented technology for a software development process, so we are not from inheritance, polymorphism, starting with the general object-oriented textbooks. Our energy should be placed in the process and design.
Optimize code organization http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index5.shtml
Abstract is an important idea to optimize the code organization in objects. Abstract goals are eliminated details, allowing developers' attention to the important goals. Abstract ideas are everywhere in the computer world. There is an abstraction of different levels of the TCP protocol stack, which hides the details of the lower layer; the business model also provides an abstraction, hiding the specific technical details for the field analyst; the design model also provides abstraction, it hides the specific Implementation details; even assembly languages are also an abstraction, it hides the machine directive; and our discussion here is also an abstraction because we ignore the application type, design language. For developers, the most important thing is to identify abstractions of this level, what should be manifested, what should be hidden. The organization's design will be clearly designed according to the abstract principles. Object-oriented is very focused on the responsibility, each class handling is as small as possible, and each method is very average. But a thing must be a few professional classes, rather than a function of a function like a traditional method.
Designed for contract http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index6.shtml
Business modeling http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-oo/index7.shtml
Object-oriented is a technology that simulates real life with a computer language. The traditional language is timing, the language of computer viewpoint, and the familiar social views are different. This is not a big problem in the early stations of software development, but when the size is getting bigger and bigger, the speed of change is getting faster and faster. People found two concepts conflict.
Reference
Design Patterns: Elements of Reusable Object-Oriented Software. Gamma, E. Helm, R. Johnson and J. Vlissides Addison-Wesley 1995. 中文E: "Design mode: can be used for object-oriented software base", Li Yingjun and other translations, Machinery Industry Press September 2000.
J2EE core mode Deepak alur, john crupi, dan malks Niu Zico, etc., Machinery Industry Press.
Effective Java Programming Language Guide. Joshua Bloch 2002 Chinese version: "Effective Java" Pan Ai Principles, Machinery Industry Press, January 2003.
[KEL 96B] Wolfgang Keller, JENS Coldewey: Relational Database Access Layers: a pattern language, proceedings plop '96, Allerton Park 1996.
[BMR 96] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-Oriented Software Architecture - A System of Patterns; John Wiley & Sons Ltd., Chichester, England, 1996; ISBN 0-471-95869 -7
[Fow97] Martin Fowler: Analysis Patterns- Reusable Object Models; Addison-Wesley Publishing Company, Reading, Massachusets, 1997; ISBN 0-201-89542-0
[Fowler, Roles] Fowler, Martin. Dealing with Roles, http://www.awl.com/cseng/titles/0-201-89542-0/awweb.htm[fer00b] EB fernandez and x. yuan. "Analysis Patterns for the order and shipment of a product ", procs. of plop 2000. http://jerry.cs.uiuc.edu/~plop2k
[FER00C] E. B. Fernandez. "Stock Manager: analogs", procs. Of plop 2000. http://jerry.cs.uiuc.edu/~plop2k
Refactoring to patterns joshua Kerievsky 2002
About author
Lin Xing, Chen Yun Software Studio Project Management Group Senior Project Manager, many years of project implementation experience. Chen Xun Software Studio is committed to the application of advanced software ideas, software technology applications, main research directions lies in software process ideas, Linux cluster technology, OO technology and software plant models. You can contact him by email IAMLINX@21cn.com.