Re:DRY is an over-rated programming principle?
by jsiaajdsdaa on Thursday July 07, 2022 @05:29AM
(#32011715)
if those 8 lines of regex have been unit tested and the function is commented to describe "what" the code does, it is entirely the point that you don't need to understand how it works
additionally, the function should be stateless and have no side effects ;)
Re:DRY is an over-rated programming principle?
by gjulianm on Thursday July 07, 2022 @05:35AM
(#32011753)
How do you test 8 lines of regex inside a function that does more things? And what's easier, to write and read the function name or copy-paste the lines with the comment (if the comment explaining what that piece does is even written, that is)?
Re:DRY is an over-rated programming principle?
by jsiaajdsdaa on Thursday July 07, 2022 @09:20AM
(#32013725)
i'm a bit confused, do we need to know the nitty gritty details of how Math.random() is written, or that it will reliably give us a random double?
Re:DRY is an over-rated programming principle?
by _ZeD_ on Thursday July 07, 2022 @06:02AM
(#32011949)
you dont
you mock the function that have the regex with a fixed behavior and check the actual logic inside the wrapper function
Re:DRY is an over-rated programming principle?
by gcassie on Thursday July 07, 2022 @10:33AM
(#32014629)
That's fair. But maybe someone wants to reuse this in another place so they do this:
``` def make_string_filename(s, style="new"): # 2 lines of shared magic if style == "old" # 2 lines of original magic elif style == "new": # different 2 lines of magic ```
When you get here, two totally separate `make_string_filenames()`, each private to the area of code they're relevant to, would be better.
Re:DRY is an over-rated programming principle?
by ParetoOptimal on Thursday July 07, 2022 @11:47AM
(#32015544)
The ideal is having 3 functions I think:
- make_string_filename_style1
- make_string_filename_style2
- make_string_filename
Then make_string_filename consists of logic to use the right style.
Or one function and a Sum type to be called like:
makeStringFilename Style1 "somestring"
Given sum type: data FilenameStringStyles = Style1 | Style2
The problem of not knowing what it does or whether it has side effects or not is more a problem of naming and documentation than DRY. Even then, it's still better than repeating the code all over, simply because when you read and understand the function once, you don't need to go back. On the other hand, if the code is all over, you need to read it again to recognize it's the same piece of code.