From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1108a1,7f8fc37d854731d6 X-Google-Attributes: gid1108a1,public X-Google-Thread: 109fba,7f8fc37d854731d6 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,7f8fc37d854731d6 X-Google-Attributes: gid103376,public X-Google-Thread: 114809,7f8fc37d854731d6 X-Google-Attributes: gid114809,public X-Google-Thread: 10461e,7f8fc37d854731d6 X-Google-Attributes: gid10461e,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Date: 1996/11/20 Message-ID: #1/1 X-Deja-AN: 197766336 references: <32813322.41C6@kyebek3.kjist.ac.kr> <55pqr5$136a@grimsel.zurich.ibm.com> <328109CD.6685@concentric.net> <32891BA4.4AA5@concentric.net> organization: New York University newsgroups: comp.object,comp.lang.c++,comp.lang.ada,comp.lang.smalltalk,comp.ai Date: 1996-11-20T00:00:00+00:00 List-Id: Robert Martin says "On the other hand, if we need to add a new function to all the modems, then in the first example, all we have to do is add a switch statement, but in the second example, we must modify the abstract modem class and all its derivatives. This is an architectural choice; and it is based upon which kind of change is more likely. If it is more likely that new functions will be added to existing modems, then the switch statement is probably the better choice. If it is more likely that new kinds of modems will be added, then the class structure is probably better. " Yes indeed, this is an important fundamental principle that does not seem to be widely enough understood. It is useful to think of a matrix with operations on the columns and types on the rows, then the issue of whether to organize a program vertically or horizaonally with respect to this particular subdomain is made on the basis of whether you expect to add to rows or columns. It is also appropriate to consider domains of expertise, does a typical expertise extend over columns or rows of this matrix? If there is a clear answer to this question, which is sometimes the case, then that may be another consideration in deciding whether to organize horizontally or vertically.