|
Quote: In every job that must be done
There is an element of fun
You find the fun and snap!
The job's a game
And every task you undertake
Becomes a piece of cake
A lark! A spree! It's very clear to see that
A spoonful of sugar helps the medicine go down
The medicine go down, the medicine go down
Just a spoonful of sugar helps the medicine go down
In a most delightful way
|
|
|
|
|
|
The best laid plans of mice and men sometimes work out fine.
|
|
|
|
|
That's really amusing. I got an email from some code regarding a very similar issue and how to fix it.
I didn't quite buy the fix, it seemed odd. Refactoring a Reporting Services Report with Some SQL Magic
And congrats for the win. I often experience management kicking and screaming when I suggest similar optimizations.
|
|
|
|
|
I empathize with you about management kicking and screaming when you suggest optimizations. Why do you suppose that happens?
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
The biggest food distributor in xxxx (with some 90 "divisions"; 100,000+ service workers, and billions in sales), duplicates all the job streams and "data schemas" (VSAM files!) every time they create a new division ... which happens every few months.
The only change is the division "identifiers".
90+ duplicate job streams running every day.
The "head" responsible for this is a 30+ year "company" man.
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
John Simmons / outlaw programmer wrote: The real silver lining is significantly eliminating the possibility of copy/paste errors when creating the steps.
So what are the government beauro crats supposed to do all day?
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
When I saw mention of compiler support for ReadOnlyReferences in the C# 7.2 language, for passing variables by reference but without exposing data to modifications in a list of new features in version 4.7.2 of the Microsoft .NET Framework in What’s new in Microsoft .Net Framework 4.8, I realized that this is a big deal.
Here's why.
- Without this option, the only way to pass a read-only reference to an object is to create an adapter, so that you can pass through the properties through getter methods, omitting setters entirely.
- Writing such an adapter is time consuming and error-prone.
- Using the adapter adds a layer to every request to read a property on the underlying object, because the request must pass through the getter on the adapter, which passes it along to the getter on the adapted object.
- If your project has many of these, your source code tree has lots of branches that add little value, and the extra objects make the assembly bigger.
See C# Futures: Read-Only References and Structs for additional details not mentioned in the InfoWorld article, not the least of which is that this parameter modifier applies to structs, too. Presumably, that includes the system-defined structs, such as DateTime, char, and others.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
If you're passing struct s around as readonly references, you'll want to make sure the struct itself is readonly as well. The same applies if you're storing them in a readonly field. Otherwise, every time you access a property or method on the struct , the compiler will make a defensive copy to enforce the readonly-ness of the value.
The ‘in’-modifier and the readonly structs in C# – Dissecting the code[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
That is precisely the point of the ReadOnlyReference modifier, which you would discover if you read that article all the way to the end.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
Which one? The article from 2017, talking about the in modifier and readonly struct s, which have already been released? Or the infoworld "subscriber only" article, which can't be read without signing up?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
The article that you cited, about the in modifier is very explicit in it summary.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
Did I ever mention that I like C++?
... such stuff as dreams are made on
|
|
|
|
|
I use C++ from time to time, too, but how is that related to this thread?
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
It also solves some sticky issues when you want to ensure that a method cannot modify contents of an object. It would have been a lot of work before to protect data in an object so that it could not be modified. You would have to basically deep clone it and use the clone.
|
|
|
|
|
Especially given that you may need only a subset of its methods and properties, it's often easier to create and adapter that exposes the needed methods as read only properties of itself, and forwards the required methods to the private instance which it adapts. It's usually straightforward to create a basic adapter to meet an immediate need, which can subsequently be extended to support more read only properties and/or forwarded methods.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
If an adapter makes sense, then yes you can, but that may be a lot of adapters if there are many levels that need to be created for different objects, and if adapter does not make sense, them may be increasing maintenance significantly as need to provide different access to methods and properties.
|
|
|
|
|
All the better! If ReadOnlyReference enables you to dispense with multiple adapters, you are further ahead of the game in reducing code bloat. However, I usually prefer to extend an existing adapter over creating a new one, especially if the extension just adds a property. The exception to that rule is if that property is hidden to prevent information disclosure or leakage.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
David A. Gray wrote: lots of branches that add little value, and the extra objects make the assembly bigger
Don't worry, we'll never need more than 640K of RAM!
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
Why does PHP not have mutable constants?[^]
Uh...
(Found through WTDWTF)
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
The WTF for me was in the comments. It exists.[^] Just... why?
|
|
|
|
|
I wonder what problem somebody had that the only solution was to make constants mutable
|
|
|
|
|
I cry a little when I think of the years that I wasted on that language.
"There are three kinds of lies: lies, damned lies and statistics."
- Benjamin Disraeli
|
|
|
|
|
PHP and JavaScript are remarkably similar, especially in the ways that make both so malleable, at the cost of being dangerous in unskilled hands.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
What do you get if you cross an Elephant with a rhinocerous?
"Elefino!
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|