Python Hall of Shame: Difference between revisions
From YM2149.org
Jump to navigationJump to search
(Created page with "== roman == Lib for converting to and from roman numerals, riddled with examples of how not to write software. * https://github.com/zopefoundation/roman * strict coding standards ineffective at filtering out bad code, though perhaps they've done enough to facilitate fixing forward * at least there are tests, so we can refactor with confidence * ... Category:Programming") |
(→roman) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== roman == | == roman == | ||
Lib for converting to and from roman numerals, riddled with examples of how not to write software. | Lib for converting to and from roman numerals, riddled with examples of how at a granular level not to write software. | ||
* https://github.com/zopefoundation/roman | * https://github.com/zopefoundation/roman | ||
* strict coding standards ineffective at filtering out bad code, though perhaps they've done enough to facilitate fixing forward | * strict coding standards ineffective at filtering out bad code, though perhaps they've done enough to facilitate fixing forward | ||
* at least there are tests, so we can refactor with confidence | * at least there are tests, so we can refactor with confidence | ||
* | * romanNumeralMap is not self-documenting, i would call it something like numeraltovalue and delete the useless comment | ||
** this embeds the subtraction logic, normally such tasks are for computers not humans | |||
* conversion of 0 to N may violate [[principle of least astonishment]] | |||
* romanNumeralPattern duplicates data already expressed in romanNumeralMap | |||
* tests modify sys, when argparse has api to pass in custom argv | |||
** and stdout, when main could be refactored to make it testable without changing stdout | |||
** if you really need to redirect stdout there is api in unittest to do that | |||
** but ideally do not modify global state at all, as any leaks can make subsequent testing invalid | |||
[[Category:Programming]] | [[Category:Programming]] |
Latest revision as of 21:41, 17 February 2025
roman
Lib for converting to and from roman numerals, riddled with examples of how at a granular level not to write software.
- https://github.com/zopefoundation/roman
- strict coding standards ineffective at filtering out bad code, though perhaps they've done enough to facilitate fixing forward
- at least there are tests, so we can refactor with confidence
- romanNumeralMap is not self-documenting, i would call it something like numeraltovalue and delete the useless comment
- this embeds the subtraction logic, normally such tasks are for computers not humans
- conversion of 0 to N may violate principle of least astonishment
- romanNumeralPattern duplicates data already expressed in romanNumeralMap
- tests modify sys, when argparse has api to pass in custom argv
- and stdout, when main could be refactored to make it testable without changing stdout
- if you really need to redirect stdout there is api in unittest to do that
- but ideally do not modify global state at all, as any leaks can make subsequent testing invalid