[Translator] The word "mode" is now really popular. Just like any popular thing, it is really a lot of misunderstandings. Even in some published articles, there is also a variety of misunderstandings, I think this will cause very bad guidance to readers. I have already wanted to write an article to clarify some misunderstandings of the model, but it is difficult to text because of the horizontal limit. At this time, I saw Mr. John Vlissides's "Ten Misunderstandings", so I was happy to copy the public.
?????????? There are ten errors below. Many of them are very popular. And see how Vlissides opens these fog.
???? Recently, surrounded by the model's discussion, people confused, horror and rumors are no longer a little bit. This also reflects from a side to the mainstream software developer, what is a fresh field ?? Although it is strict, it is not a new field. At the same time, the model is also a rapidly developed area, leaving a large blank. And, right, our supporters of our models should also be criticized, because we didn't finish the whole knowledge of your knowledge. Although we think so, but did not do this [BMR 96, Coplien96, CS95, GOF95, MRB98, VCK96].
???? Therefore, I feel that I have a responsibility to correct some of the more and more exaggerated misunderstandings. The misunderstandings I have heard are enough to form their own mode. Even I have also wanted to make my own software structure in the model ... later I understood: "Turn all things into a pattern", this idea is wrong! In short, please remember that this article is not seen in people who give the pattern community. I think the vast majority of model experts will agree: these are all common misunderstandings. But they may not agree with me to eliminate these misunderstandings.
In these years, I have heard many people talking about patterns. Take these things that you hear, there are three categories of misunderstandings: "What is the" mode "misunderstandings, and misunderstandings for" mode you can do ", and misunderstandings for the support mode. My "Ten Misunderstandings" fall into these three categories, so I will organize these misunderstandings. First, let's take a look at the misunderstandings about "what is what".
One of the misunderstandings: "Mode is a solution for a problem under some scenario"
???? This definition comes from Christopher Alexander [AIS 77], so if you call it as "misunderstanding", someone will use my eye-bearing. But you can see your shortcomings in this simple antique.
???? Question: The award-winning lottery is over time, how can I get a bonus?
???? Scene: Only one hour from the deadline, but my puppy is swallowed.
???? solution: Open the dog to break the belly, pull out the lottery, and fly to the nearest redemption location.
???? This is "solution for a problem under some scene", but it is not mode. What is missing? At least three things:
???? 1. Repeatability. The solution should correspond to the outside scene.
???? 2. Can be taught. A solution should be portable to different situations. (Most modalities of most modes are based on "constraints" and "effect".)
???? 3. The name used to represent this mode.
???? It is really hard to find a satisfactory definition. The discussion on the "pattern discussion" mailing list (Patterns-Discussion@cs.uiuc.edu) is also proven to. A large reason for the difficulty definition is that model is both a thing, and a description of similar things. To distinguish between these two, there is a way: "Mode" This term is only used to refer to the description of the mode, while using the "Mode Example" to refer to the specific application of the mode. ???? However, the definition of the term is likely to be whitepere, because a definition may make sense to one person (such as programmer), but for another person (such as project supervisor that can only see written materials) significance. Of course, I don't plan to make a final definition here. However, any provision of mode elements, in addition to the need to include problems, solutions, and scenarios, repeatability, can be communicablished and named.
???? Misunderstanding 2: "Mode is a javel, rules, programming skills, data structure ..."
???? I usually call these misunderstandings as "contempt." If you try to simplify some unfamiliar things into familiar things, it is very natural, especially when you don't have a particular interest to drive these unfamiliar things. In addition, some people often take a new bottle of alcohol, then blow "innovation" and "revolution". Stay is also good.
???? However, this contempt is usually not from personal experience, but is from superficial understanding and a little cold. Moreover, there is nothing that is really "new". A variety of patterns have been present in people's minds, but we now start to name the model and record the mode.
These ideas are explained one by one: The pattern is available, such as "mode", such as "constraint", such as "unknown quality" of Alexander, and so on. But the pattern cannot be simplified to be available. Compared with other computer science fields, the new terms introduced by the model are really pitiful. For the audience, a good model is very easy to accept. In explaining a mode, there may be a need to reference a problem in the problem of problem, but there is almost no need to use what specified-specific terms.
???? Nothing can make the rules that can be used without thinking (the component is just the opposite), and the mode is not just "programming skills", although the "dialect (IDIOM" section in the mode is a specific language. . In my opinion, "Skills" has a contemptuous meaning and excessively emphasizes the solution, and ignores the importance of problems, scenes and names.
???? There is no doubt that you have also heard three stages of innovation acceptance: First, it is treated as garbage; then, people will think that it does not have an implementability; in the end, everyone understands It doesn't matter when it is meaningful. "We have been doing so." Now, the model has not fully went out of the first stage.
???? Misunderstanding 3: "Understand one, understand all"
???? The rules of a knife are often unfair, and people are more cutting more. The field, content, scope, form, quality ... Different people write different modes, and the modifications of the model are even more than the author. The author of Alistair Cockburn, Jim Coplien, Neil Harrison and Ralph Johnson has surpassed the initial stage of different fields, different forms of pattern. Just look at a few examples to make a general conclusion, such conclusions must be wrong.
???? Misunderstand 4: "Modes need to be supported by tools or methodology will be effective"
???? In the past five years, I recorded, used and helped others used patterns, but also helped completing a mode-based tool [BFV 96], so I can be very grasped: Most benefits come from the original indentation. That is, there is no form of external support. When talking to this topic, I usually point out the four benefits from the model:
???? 1. They record the experience of experts and make non-experts understand.
???? 2. Their names constitute a vocabulary to help developers better exchange.
???? 3. They help people understand a system faster ?? As long as this system is described in the way.
???? 4. They make the system's reorganization easier, regardless of whether the original system is designed in mode.
???? In the past, I always thought that the first item was the biggest benefit of the model. Now I realize that the second at least the same is equally important. Please think about it, how many bytes of information are flowing between developers in a development project (including oral and electronic)? I guess even if there is no 1G. (After the "design pattern" is launched, I have received an email that I do twice a megaw of GOF. And what we describe is also small to medium software development projects.) Because there is such a large information exchange Therefore, any tiny increase in efficiency can save a lot of time. In this sense, mode broadens the bandwidth of people's communication. My evaluation of the third and four are gradually improved, especially in the project, and the software survival cycle is growing and longer.
???? At least in the short term, the mode is mainly present in the brain, and does not exist in the tool. If there is a methodological or automation tool, there should be other benefits, but I believe that these are just cream on the cake, not the cake itself, or even a layer of cake.
* * *
???? So far, what I said is about "what is the mode." Take a look at the misunderstanding of "what you can do". There are two different styles here: exaggerate their words and troubles.
???? Misunderstanding 5: "Mode can ensure software reuse, higher productivity, peace ..."
???? The reason is very simple, and the model does not guarantee. They may even have benefits you. In the process of creating new things, the mode cannot replace the person's location. They just bring a hope that it is possible to make a lack of experience, even unneained, but have the ability to get design capabilities as soon as possible.
???? People often say: Good models will let readers have "ah!" Response. In fact, only when the mode just dials a sense of the reader, they will react. If not, the mode is just a tree in the forest. So what is a good pattern? No matter how good it is written, if you can't cause the reader's resonance, how can it be a good pattern?
???? Mode is just another tool in the toolbox of the developer, and the expectations that are too high to mode will only be counterproductive. Ready, then do the worst plan ?? This is to prevent being deceived, eliminating the best way to fight against fight.
???? Misunderstanding 6: "Mode can 'generate the' entire software system"
???? This misunderstanding is a bit similar to the previous, but the aggressive is slightly less.
Every time, the Mode Forum will discuss the generation capacity of the mode. According to my understanding, "generation ability" refers to the ability to create the final behavior. Many people think that the model can help the reader resolution model itself does not have a clearly proposed problem. There are also the same point in some books I have read.
???? For me, the key to "generation capabilities" is the mode of transmission, or solve it, or to discuss the effect. These observations are particularly useful when you define it. However, the model itself does not make anything. Anything is made by people. Moreover, the pattern is impossible to cover each aspect of the architecture. Give me any design with the actual value, I can find the design problem that is not involved in it. Perhaps these problems are not common, not repeatability, or just not recorded in the form of a pattern. In any case, you must be responsible for filling the blank between the modes .? Use your own creativity. ???? Misunderstanding 7: "Mode is designed or implemented for (object-oriented)
???? The other extreme is excessive restriction, just like this misunderstanding. Frankly, anyone is entirely probably it, I will not be surprised. Numerous people have asked me this question, so it also entered the "Ten Misunderstanding". If you think this point of view is really naive, skip this section.
???? If the pattern cannot describe the expert's experience, then they are nothing. For the authors of the model, any form of expert experience is recordable. Of course, there is a high experience in object-oriented software design, but in non-faceted object design and analysis, maintenance, testing, documentation, organizational structure ... these aspects are also worth having to record. Now, the mode in different fields begins to surface. At least two books on the analysis mode [Fowler97, Hay96], and each PLOP conference will receive a new mode type. (Specially interesting is the 1996 PLOP meeting even paying attention to the mode of music composing!)
???? Like most misunderstandings, this misunderstanding is also caused. Look at people's formats used to describe the pattern, there are two basic styles: describe the GOF style of the high-level structure (for "design mode"); close to the literary Christopher Alexander style Narrative, as little as possible . Since there is already a pattern, something other than object-oriented design is described, so I now recognize the deviation caused by the GOF style. For expert experience in some of the fields I have, this style is not described. Why is the structural diagram always let people think about C ? What should I do with the mode of music composing? Is the "collaborative" part really meaningful?
???? Obviously, a format cannot adapt to all needs. Comparing the general meaning is the concept of the pattern: the pattern is a tool that is recorded and transmitted from expert experience. No matter which field expert experience.
???? Misunderstanding 8: "There is no evidence that the pattern has helped anyone"
???? This view has had certain persuasiveness, but now there is no. In the magazine such as Software-Practice and Experience [Kotula96], at the meeting of OOPSLA [HJE95, SCHMID95] and ICSE [BCC 96], people constantly report their own benefits from the model. Doug Schmidt has clearly explained the income of the model when teaching computer science [PD96]. Although the vast majority of evidence is only qualitative, it is known that at least one organization has got some quantitative conclusions [Prechelt97, PUS97].
???? As time, we need to better master the benefits and disadvantages of the usage model. Although the initial feedback has made us see hope, we need more practical experience to do a comprehensive estimate. However, if it is only a model, it is really a big fool.
* * *
???? About "What is the mode can do" is really a lot. Below, the last two misunderstandings are not about the model itself, but about people who support usage models.
???? Misunderstanding: "Mode community is the elite small circle"
???? I really want to know where this concept is from. If there is anything leading place to say that people in the model community is the huge difference between them. From the list of participants from the PLOP conference? People from all over the world, there are also small companies, have analysts, designers and realizers, have students, have professors, have a big name to have a rookie . What makes me surprised, there are many participants who are not a computer scientist! This community is still non-changing, and the list of participants annually is different from the previous year. ???? If the background of the pattern community is open, others may feel weird: very few college members. In fact, the vast majority of PLOP participants are practitioners. The early advocacy of software models ?? Including Kent Beck, Peter COAD and Ward Cunningham do not have college background. Only one person in GOF is a college, and he is also the most practical college parties I know. Obviously, the mode community fundamentally opposes any possible sectarian and e-belonging.
???? Misunderstanding: "Mode Community is selfish, even a conspiracy home"
???? I have accused: The maximum model of mode is the continuous income of someone to write mode books. They even suggest that the development of the model has some evil purpose.
???? Nonsense!
???? As a member of GOF, I can tell you that we are as surprised as anyone else caused by "design patterns". We are also unpredictable for the first time in OOPSLA 94, and even publishers have such a large sales. During the entire writing process, our most concerned is to try to write a high-quality book. As for sales, we have no time to think. Now "Mode" has become a fashionable vocabulary, and some people will use this word to seek private interests. However, if you carefully read the work of the top pattern author, you will feel their common goal: how difficult experience, best practice, even competition is more than competition ?? Share to the reader, and explain one clear. It is this kind of enthusiasm to help readers to motivate every sincere and practical pattern. If there is no such enthusiasm, the author will get it into a huff. This irresponsible author is often the root of all misunderstandings!