| Having one class being the main class is not a good idea nor is it OO style. This class ends up acting like a 'God' class and not distributing out its behavior. Responsibility, control, and communication are distributed in good design. Not one object does everything. The code is not reusable and it is very hard to test. Using delegation (an OO principle) would be a solution to this. ~Sabina Karkin |
| Good answer, Sabina Barbara Ericson |
| Abbreviating class names is a bad idea because they need to be explanatory and non-ambiguous. If a person sees "Ware", "Warehouse" doesn't immediately come to mind. Thus, it would be confusing as to what that stood for. Also, a class name should be a noun. It should be left as "Warehouse". ~Sabina Karkin |
| Copying code from similar classes is a bad OO design. There should be no redundancy in OO programming. Abstraction would be a solution here, to abstract the code that's used in multiple places and inherit from it. ~Sabina Karkin |
| Actually copying code is bad in procedural programming too. Anyone want to say why? Barbara Ericson |
| You have to change the code everywhere you copy/pasted if it has to be changed. Big Kang |
| Right Big Kang, Barbara Ericson |
| A Subclass should be basically a specialization for its base class. Association should be used in this situation instead of inheritance. It is always bad if a base class cannot be directly substituted by the subclass. Big Kang & Dennis Antonio Delgado |
| Yes, Big Kang and Dennis, the subclass should be able to be substituted for the parent class and if not you shouldn't use inheritence but association (delegation). Barbara Ericson |
| This should be handled by subclassing Payment - then each class of payment knows how to handle billing, rather than checking the type. -Kerry |
| Right Kerry, anytime you see a case or switch on a type use subclassing instead. Barbara Ericson |
| Sounds like these people sound pretty happy about their design. If it works well for them, then I wouldn't advise them to spend money and change it. timmy |
| Anybody care to reply to timmy? Is this object-oriented programming? If this software gets used and is maintained most of the cost will be in the maintenance. Is doing it this way easier to extend and maintain? Barbara Ericson |
| it's not OO. timmy |
| When is it okay to use class methods? Barbara Ericson |
| I would recode the whole thing Ryan |
| Why? Barbara Ericson |
| Because these people obviously didn't do OOA, OOD, and there OOP is not OOP, if there are these kind of design flaws then obviously the whole thing is a mess Ryan |
| Who said there were design flaws? Maybe they did some really good functional or procedural programming and decided to use classes as namespaces for their functions. timmy |
| If they are using classes to do procedural programming they aren't going to get the benefits of using objects by doing object-oriented programming. One of the benefits they won't have is encapsulation. Another is reuse. Another is it is easier to maintain. You should read the book "Surviving Object-Oriented Projects" which takes a good objective and researched look at the OO hype and does find that it can deliver on these benefits. See http://www.amazon.com/exec/obidos/tg/detail/-/0201498340/qid=1059443411/sr=8-1/ref=sr_8_1/002-0339340-1772802?v=glance&s=books&n=507846. Object-oriented programming has moved out the of acedemic world and is now the mainstream. Even Microsoft has accepted it as the standard way to program. Barbara Ericson |
| You can get encapsulation with closures. You can get reuse with functions. Arguing about easier to maintain isn't really clear cut though. OOP makes all these things more approachable, but I don't like how some of the people above just accept that it's always the best on blind faith. Experience in applying all these paradigms is probably the best way to learn the advantages and disadvantages of using one in a particular case. There are times when prolog is going to help you find a solution faster than java, and there are times when lazy-evaluation makes for a clearer solution to a problem. But that doesn't make them the answer to every problem. timmy |
| Yes, timmy you can program anything in any language and in any programming style. You should choose the right language and style for the task at hand. But, object-oriented programming has gained popularity becuase it does help programmers write code that is easier to use, reuse, and maintain. Software is expensive to develop and even more expensive to maintain. The software industry doesn't have a great track record for showing that it can develop good quality software that meets users needs (some 50% of developed software never gets used). Object-oriented development doesn't replace procedural. You still use a procedural style to write the methods. Barbara Ericson |