Subject |
avoid by |
slow |
make |
be |
be not |
is part of |
is a synonym of |
is a subtopic of |
occur |
control |
avoid |
have disadvantage |
have purpose |
reduce |
prevent |
improve |
helps |
has definition |
use |
allow to |
have risks |
practise |
allow |
duplication of code | creating a separate method that has the common code, and calling it from the original location and any other needed locations | | | | a kind of reuse | | cloning | Programming Style Guidelines | | | because it increases the total volume of code and means that if you change the code in one place, then you might forget to change the code in the other places | when there are two or more occurrences of the same or similar code in the system, any changes made (e.g. to fix defects) will have to be made in all clones | | | | | | | | | | | |
encapsulation | | | | | | | | 2.7 - Concepts that Define Object Orientation | | | | | | | | | to achieve information hiding | Creating a module to contain some algorithm or data structure, thus hiding its details behind the module's interface | | | | | changes to code to be more easily made since one can be confident that 'outsiders' are not relying on too many details |
information hiding | | | | | | | | 9.2 - Principles Leading to Good Design | | | | | | | | | | Hiding details so as to reduce complexity | | | | | |
locking | | performance since it takes a lot of extra work to manipulate and check the locks | | | | | | 10.5 - Defects in Timing and Co-Ordination: Deadlock, Livelocks and Critical Races | | | | | | | critical races | | | A mechanism for reserving a resource so as to avoid inappropriate concurrent access | a mechanism such as semaphores | | | | |
nesting | | | | | | | | Programming Style Guidelines | | | | | | | | | | | | too many levels | | | |
overriding | | | | | | | | 2.6 - The Effect of Inheritance Hierarchies on Polymorphism and Variable Declarations | | | | | | | | | | The situation where a method local to a class is used in place of a method that otherwise would have been inherited | | | | | |
privacy | | | | | | | | Programming Style Guidelines | | | | | | | | encapsulation by ensuring that only programmers working inside a class (or inside a package) can use all of its facilities | | | | | | | changes to code to be more easily made since one can be confident that 'outsiders' are not relying on too many details |
restricting access | | | designs more flexible | good | | encapsulation | | The Basics of Java | | access to methods, instance variables and class variables | | | | coupling | | | | | | | | | |
reuse | | | | one of the keys to successful software development | as extensive in software engineering projects as might be desirable | | | 3.2 - Incorporating Reusability and Reuse Into Software Engineering | if software developers reuse existing good-quality components, and also contribute to reusable components that others can use | | | | to reduce the large cost associated with developing the same thing over and over again | | because of a vicious circle: Developers do not develop high quality reusable components, so there is nothing to reuse. Since there is nothing to reuse, software developers take so much time to develop applications that they lack time to invest in reusable frameworks or libraries | | | The practice of using the same code or design in more than one place | | | | because - developing anything reusable is seen as not directly benefiting the current customer
- If a developer has painstakingly developed a high-quality reusable component, but management only rewards the efforts of people who create the more visible 'final product', then that developer will be reluctant to spend time on reusable components in the future
- Efforts at creating reusable software are often done in a hurry and without enough attention to quality. People thus lose confidence in the resulting components, and in the concepts of reuse and reusability
| |
synchronization | | | | | | | | The Basics of Java | | | | | to avoid problems that can arise when two threads can both modify the same object at the same time | | | | | A mechanism to guarantee that only one thread can access an object at a time | | | | | |
testing strategy | | | | | | | | 10.2 - Effective and Efficient Testing | | | | | | | | | | | | | | | |