98
votes
Accepted
Is it a security vulnerability to declare class members as public?
Access modifiers like public/private/protected are not intended as a security boundary. And since C++ is not a memory-safe language, this cannot be a security boundary.
The laziest “attack” to access ...
47
votes
In OOP, isn't the 'protected' keyword required?
It depends on what you mean by "required".
Access modifiers are not a necessity. You could replace every access modifier with public and most applications will work just like they did when you used ...
38
votes
In OOP, isn't the 'protected' keyword required?
No, it's not required: Bjarne Stroustrup, explained how he naively added protected to C++ release 1.2, thinking to provide a useful feature to class developers, just to conclude only 5 years later ...
36
votes
How to analyze and understand the use/application of a "class" in a colossal million-line legacy code base?
One over riding pattern has emerged in every interaction I've ever had with technology: I learn more when it breaks.
So break it.
I mean, this is software. You can't hurt it. Sneak a copy off some ...
20
votes
Accepted
Classes vs. modules in Python
A python module is nothing but a package to encapsulate reusable code. Modules usually, but not always, reside in a folder with a __init__.py file inside of it. Modules can contain functions but also ...
18
votes
Accepted
How to resolve class interdependence in my C++ code?
There are two parts in your question.
The first part is the organization of C++ header files and source files. This is solved by using forward declaration and the separation of the class declaration (...
18
votes
Accepted
Is it best practice to define a member function directly in a class?
When a function is defined as part of the class definition, it is implicitly inline (regardless of whether you use that keyword). This has a number of consequences.
The function may be inlined by the ...
16
votes
Accepted
Is calling the superclass constructor in a subclass really important?
If you add variables to self in the constructor of Class and don't call Class.__init__() in the constructor of Subclass, then these variables will not be in your Subclass object.
See that question ...
15
votes
Accepted
What is a good design practice to avoid asking a subclass type?
Polymorphism
So long as you use getType() or anything like it, you're not using polymorphism.
I understand feeling like you need to know what type you have. But any work you would want to do while ...
14
votes
Is it a security vulnerability to declare class members as public?
Using public and private correctly (and following good practices in general) helps you write better code with fewer bugs, and code with fewer bugs is typically harder for an attacker to exploit. ...
13
votes
Accepted
Proper way to name a class which has just methods and not fields
If a class is properly encapsulated it's hard to tell if it even has fields from outside.
Some classes are immutable. You can't change their fields once their objects are constructed. Your class is ...
13
votes
How to analyze and understand the use/application of a "class" in a colossal million-line legacy code base?
First, you need a goal when analyzing a class. If you don't have this, you have no idea when to stop. And with a million-line codebase, you could go on forever. Since we don't often read code for the ...
11
votes
Accepted
How to argue against this "completely public" mindset of business object class design
Completely public classes have a justification for certain situations, as well as the other extreme, classes with only one public method (and probably lots of private methods). And classes with some ...
11
votes
Accepted
Define C++ class in one or more files
It depends, as usual.
Generally, it's best practice to split each class into a header (.h or .hpp) and source (.cpp) file, where you put everything you can in the source file*, because it ...
11
votes
Is there a better way of using getters and setters on private members of a class?
Using properties
A proper getter and setter would look like this:
public class Carrots
{
private string name;
public string Name
{
get { return name; }
set { name = ...
10
votes
Rule of thumb for deciding which class a method belongs to
This almost feels like you need a PlayerStatistics class to calculate stats for a single player. You might also benefit from a SeasonStatistics class to calculate stats for an entire season. Off the ...
10
votes
Accepted
How should an `Employee` class be designed?
This is a more well-formed transcription of my initial comment under your question. The answers to questions addressed by the OP may be found at the bottom of this answer. Also please check the ...
10
votes
Accepted
What's the best way to handle a large multi-file class in Javascript?
In situations like this, when I have one part of my program that needs to stand alone as a single, self-contained module but contains many thousands of lines of code, I prefer to take a compositional ...
10
votes
Accepted
Does wrapping functions/'things' in classes reduce efficiency?
This statement is either wrong or incomplete:
Calling a non-virtual member function requires exactly the same code as calling a free function with one additional pointer argument. That's peanuts.
...
9
votes
Why instantiate and initialize an object without saving it into a variable?
If this is the case then would it be right to say that it is not stored in memory?
Not really. The Scene object is being instantiated, which by definition means memory is allocated.
Why would we ...
9
votes
In OOP, isn't the 'protected' keyword required?
Python is also a language that strongly adheres to the object oriented programming approach. It uses the classical approach of classes and objects.
The thing to remember however is that any "word" is ...
9
votes
Terminology: Classes that contain only methods
Question #1: what is the name of a class that contains only methods?
Stateless
Question #2: what is the name of a class that contains both fields and methods?
Stateful
These "names" (...
9
votes
How to analyze and understand the use/application of a "class" in a colossal million-line legacy code base?
If it is available, look at the history of commits related to the class in your version control system (CVS, SVN, git, mercurial...). Commit messages might help. Context of commits (ie other commits ...
8
votes
Inheritance vs additional property with null value
It depends on the circumstances. The specific example is unrealistic since you wouldn't have a subclass called BookWithColor in a real program.
But in general, a property which only makes sense for ...
8
votes
Accepted
why can't class directly take arguments instead of using a constructor?
Your example
class Car(String theCountry) {
String country;
country = theCountry;
String display() {
return country;
}
}
has several flaws that "real" constructors dont.
You ...
8
votes
How to best to organize class and interface files?
Since an interface is abstractly similar to a base class, use the same logic you would use for a base class. Classes implementing an interface are closely related to the interface.
I doubt you would ...
8
votes
In OOP, isn't the 'protected' keyword required?
Before we decide that the protected access modifier must be removed from all popular OO languages I would like to point out that it would be pretty inconvenient to lose it.
In abstract base classes ...
8
votes
Is judicious & plausible selection of class fields a valid refactoring step?
Your question seems to be based on a misunderstanding. Fowler does not "dislike temps" in general. Quite the opposite, he provided a specific refactoring for introducing such variables, he called it
...
8
votes
Accepted
Why would you make a struct without typedef?
C doesn't offer custom namespaces as C++ does, but it's untrue that C doesn't have namespaces at all. Functions and structures are in different namespaces:
#include <stdio.h>
void Test ( ) {
...
8
votes
Accepted
Why List<T>.Enumerator is struct?
According to a video from a conference session called "Writing Allocation Free Code In C#", the Net Core team is taking efforts to reduce unnecessary object allocations. Since struct is a "Value" ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
class × 300object-oriented × 87
c++ × 48
java × 43
c# × 34
class-design × 34
python × 32
design × 28
object × 21
object-oriented-design × 20
php × 16
interfaces × 16
uml × 16
javascript × 14
inheritance × 14
design-patterns × 13
functions × 12
class-diagram × 11
architecture × 8
naming × 8
methods × 8
constructors × 8
programming-languages × 6
database × 5
programming-practices × 5