Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4583378
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T21:12:24+00:00 2026-05-21T21:12:24+00:00

I recall reading an article about constructors being evil (but can’t place it). The

  • 0

I recall reading an article about constructors being evil (but can’t place it). The author mentioned that constructors are a special case of methods; but have restrictions (such as that they cannot have a return value).

Are constructors evil? Is it better to have no constructors and instead rely on a method like Initialize, along with default values for member variables?

(Your answer can be specific to C# or Java, if you must pin down a language.)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T21:12:25+00:00Added an answer on May 21, 2026 at 9:12 pm

    That sounds like Allen Holub. One might argue that constructors are evil solely to drive web traffic 🙂 They are no more evil than any other language construct. They have good and bad effects. Of course you can’t eliminate them — no way to construct objects without them!

    What you can do, though, and this is the case that Allen was making, is you can limit your actual invocation of them, and instead favor, when sensible, factory methods like your Initialize. The reason for this is simple: it reduces coupling between classes, and makes it easier to substitute one class for another during testing or when an application evolves.

    Imagine if your application does something like

    DatabaseConnection dc = new OracleDatabaseConnection(connectionString);
    dc.query("...");
    

    and imagine that this happens in a hundred places in your application. Now, how do you unit test any class that does this? And what happens when you switch to Mysql to save money?

    But if you did this:

    DatabaseConnection dc = DatabaseConnectionFactory.get(connectionString);
    dc.query("...");
    

    Then to update your app, you just have to change what DatabaseConnectionFactory.get() returns, and that could be controlled by a configuration file. Avoiding the explicit use of constructors makes your code more flexible.

    Edit: I can’t find a “constructors” article, but here’s his extends is evil one, and here’s his getters and setters are evil one.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I recall reading somewhere that using references to smart pointers can cause memory corruption.
A while back I recall reading a magazine article (in Wired I believe) about
I recall reading, on multiple occasions and in multiple locations, that when firing the
I recall reading sometime ago that all GET requests from a webbrowser are logged.
I recall reading somewhere that in HTML5 it was no longer okay to use
I recall hearing that the connection process in mysql was designed to be very
I don't ever recall coming across anything for C that's as extensive as C++'s
I seem to recall that there is an HTML tag that escapes absolutely everything
I seem to recall something about avoiding the Immediate If operator ( ?: )
In Matlab, I recall being able to declare an array and initialize it and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.