The discussion revolves around a proposed set of strict coding guidelines, provoking disagreement on the nature and application of such rules.
Here are the three most prevalent themes:
1. Function Length Limits are Arbitrary/Context-Dependent Guidelines, Not Absolute Rules
Many users argue that the suggested limit of 70 lines for functions is an arbitrary metric that fails to account for the reason code is structured the way it is. While many agree that overly long functions are often a code smell, they contend that rigid adherence causes more harm than good, especially for sequential logic.
"The length of functions in terms of line count has absolutely nothing to do with 'a more modular and maintainable codebase', as explained in the manifesto." β keyle
"Maturity is knowing when the guideline doesnβt apply. But if you find yourself constantly writing a lot of long functions, itβs a good signal something is off." β stouset
2. Conflict Between System Clarity (Macro View) and Part Clarity (Micro View)
A major debate centers on whether conceptual locality or sequential flow provides better understanding. Critics argue that splitting sequential, well-ordered logic into many named small functions ("splitting for splitting's sake") increases cognitive load by forcing the reader to jump between locations to follow the process. Proponents argue that named abstractions, regardless of location, are far superior to reading long, complex blocks of code.
"Now you have 12 functions, scattered over multiple packages, and the order of things is all confused, you have to debug through to see where it goes. You've just increased the cognitive load of dealing with your product by a factor of 12." β keyle
"With properly factored code, you only jump away when you need to... The cognitive load is decreased significantly. Because now the functions have names; the steps in the process are labelled." β zahlman
3. Practicality and Context (Hobby vs. Commercial/Critical Systems)
Several users question the feasibility and necessity of extreme rigor (like aiming for "zero technical debt") in time-sensitive commercial environments, contrasting it with the requirements of safety-critical software (like financial databases or aerospace systems). The consensus is that rigid adherence to such demanding standards is often a "privilege" of projects where failure cost is exceptionally high.
"I would not hire a monk of TigerStyle. We'd get nothing done! This amount of coding perfection is best for hobby projects without deadlines." β baalimago
"This is the kind of development that one needs for safety critical applications. E.g., nuclear power plants or airplane control software. I don't think it is economically feasible for less critical software." β cjfd