62
votes
SQL as a means of avoiding "releases"
Problem scenarios like these tend to suffer from a very confused train of thought that mixes ideas. In an attempt to answer this, I am going to have to systematically unravel all of the discrete ...
36
votes
How can we avoid extremely complex configurations in enterprise software?
Why do companies making software sold to other companies tend to attempt to make the code general enough to meet the needs of all clients at the same time, while adapting the product to the needs of ...
33
votes
Accepted
What Semantic Version increment to use for a filename change?
I think myprogram needs to release 1.1.0 which supports the myprog alias. If the user invokes myprogram then it should present a notice/warning to the programmer that this name will be deprecated in ...
24
votes
SQL as a means of avoiding "releases"
Monkey Patching
It seems that the requirement from your boss is to have the ability to Monkey Patch the system while bypassing all other software development tools, processes and methodologies.
Monkey ...
24
votes
How can we avoid extremely complex configurations in enterprise software?
Candied orange's answer makes a good job in explaining the economical motivation behind configurable systems in a quite metaphorical way. Still the main software engineering question remains, how we ...
16
votes
Accepted
In what configuration file format do regular expressions not need escaping?
CDATA sections in XML should do.
Here's a stackoverflow post about it:
https://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean
I remember it took me a while to understand how to use ...
15
votes
What Semantic Version increment to use for a filename change?
Since this is a backward incompatible API change, you should bump to 2.0.0. Changing the name of a command line program is backward incompatible because the name is part of the API, and scripts and ...
13
votes
Accepted
Binary data formats, how to make ensure you can read different format versions?
It seems to me that the simplest solution is to make your version header unambiguous and make sure that the old format can never look like it has a format header, you simply look for it. If it's not ...
13
votes
In what configuration file format do regular expressions not need escaping?
This is indeed an interesting question, as commonly the requirements for config file formats are somewhat different, so it's understandable that available formats don't really support this requirement....
11
votes
How do I decide whether an option belongs in an environment variable, command-line option, or both?
The decision between command-line option and environment variable should primarily be driven by what is convenient for the end-user of the application and the expected usage patterns of the option.
...
10
votes
Binary data formats, how to make ensure you can read different format versions?
Your old format starts with an 8-byte "size" element (probably a 64-bit long). If that's the file size in bytes (what I guess), it most probably never exceeded 100 GByte, meaning 2^37. So, if you ...
10
votes
In what configuration file format do regular expressions not need escaping?
Consider TOML
It handles two different forms of raw strings:
regex = '<\i\c*\s*>'
OR
regex2 = '''I [dw]on't need \d{2} apples'''
9
votes
Storing settings in a table in my SQLite database or separately?
I don't agree that storing settings in a database table is a bad separation of concerns. Your "concerns" will be separated by not defining a relationship between the settings table and other tables in ...
9
votes
Accepted
Should a class be responsible for its own configuration
Both is not really great.
The first version is slightly better, because it at least attempts to be able to inject something.
The problem is, strings cannot be injected based on the name of the ...
9
votes
Should you test configuration?
There's a (mis)conception that you don't have to test configuration
Well, you wrote it - it is probably a misconception.
Any configuration has surely to be tested - and it will be tested, at least at ...
8
votes
Binary data formats, how to make ensure you can read different format versions?
The convention format version ID, everything else is good because it gives maximum flexibility for the format. In your case the version ID isn't right at the front but at a fixed offset. This slightly ...
8
votes
Accepted
The notion of configurable strategies
"As you can see above, each Strategy is optionally configurable through its constructor."
This is perfectly fine/normal, and is in fact one of the cornerstones that makes polymorphic types ...
8
votes
What Semantic Version increment to use for a filename change?
The semantic versioning defines versioning rules solely in relation with the API, as it aims to facilitate the management of dependencies between packages.
Regarding the command line you are in a grey ...
8
votes
SQL as a means of avoiding "releases"
That code is in stored procedures inside a SQL-based database does not excuse it from version control, version management, testing, and all the usual dance steps of software development.
For ...
8
votes
Accepted
What are the benefits of configuration languages over just using the source language?
To perhaps state the obvious, configuration is a different activity than coding. In my experience, configuration is something that is applied at the point of deployment. For example, you might need ...
8
votes
Accepted
How can I manage validation logic for 150+ screens with unique business rules across microservices?
Ok, you have a system with 150 services and a common, monolithic database. On the web, you will find hot debates if this really counts as a microservice architecture, that the DB is a single point of ...
7
votes
How can we avoid extremely complex configurations in enterprise software?
A solution we've been using for a couple of decades now is to have complex ERP software with standard off-the-shelf configurations. The customer gets a lot less choice taking a pre-configured ...
6
votes
Accepted
How to read configuration text files in Java
Raw Java world uses Java propeties format to handle similar configuration tasks. Dedicated class Properties makes this trivial.
try(Reader reader = Files.newBufferedReader(Path.get("config....
6
votes
Should I place #define in separate file?
It depends. Do you need that #define to avoid "magic constants", or do you use the #define to make it configurable?
If SOME_BUFFER_LENGTH needs to be 256, and you don't want to write 256 everywhere ...
6
votes
Is it crazy to move deployment logic into test suite …?
See it this way: what you actually did is, you automated the steps of your deployment process in a test-driven manner, just like you can implement any other program or component in such a manner. ...
6
votes
Accepted
Environment configuration vs domain detection
You should definitely modify the CI to correctly set the configuration for the environment rather than trying to work it out from the Url at runtime.
You should use Ocotpus Deploy to replace config ...
6
votes
In what configuration file format do regular expressions not need escaping?
NestedText is a configuration file format that makes a point of not requiring any escaping or quoting, which makes it very good for applications like this:
# regex examples from:
# https://support....
6
votes
SQL as a means of avoiding "releases"
we have no DevOps pipeline, Kubernetes, etc. due to IT department restrictions, so everything deployment-wise is manual at this point
While you added it as a passing comment, this is the most ...
6
votes
How can we avoid extremely complex configurations in enterprise software?
Maybe not...
This approach, from my experience, has important flaws.
From the programmers' point of view, the product, in its entirety, is incoherent, too big, too complex and frankly weird. It is ...
5
votes
Is it crazy to move deployment logic into test suite …?
If your "test code" is being used to deploy your production code, it's no longer test code - it's production code.
That being said, your idea is sound in that mirroring your production environment as ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
configuration × 211configuration-management × 24
design × 18
c# × 16
python × 16
java × 15
environment × 13
deployment × 10
design-patterns × 9
architecture × 9
c++ × 9
.net × 9
php × 7
versioning × 7
object-oriented × 6
xml × 6
database × 5
development-process × 5
asp.net × 5
properties × 5
unit-testing × 4
programming-practices × 4
testing × 4
database-design × 4
microservices × 4