4 ms·
state can be passed through as arguments...
by robmcm 10y ago
state can be passed through as arguments...
- signa11 10y agoSure, but then there are more questions :) e.g. how many parameters ? 3, 4 ... ? what if they are of the same type ? would you change your numbers then ? users can get the order wrong etc. another thing : if you pass too many parameters, isn't that a hint to the fact that something is amiss ? edit-1 : fixed typo
- gnaritas 10y agoState can be stored in instance variables as well, and should be if many small functions share them, it's what objects are for.
- signa11 10y ago> State can be stored in instance variables as well... but then we are back to the beginning of the thread...
- gnaritas 10y agoNo, we aren't, since objects are the proper way in this case to reduce cognitive load. This notion that all the code has to be in one method to be understood is symptomatic of programmers who don't know how to factor correctly thus leading to the necessity of having to read a methods implementation to understand what it does, i.e. they're bad programmers blaming their shortcomings on well factored code rather than learning how to read and write well factored code correctly. Breaking down large methods into numerous small ones makes the code easier to read and understand, not harder, unless you do it entirely wrong.
- robmcm 10y agoRemember this is in the case of spiting out smaller functions to improve readability. Variable naming will only add to that, as you can rename variables in the extracted methods for their local purpose. If you have too many arguments you can package them up in a object/map/tuple of your choosing (depending on language). (Reverting to local state would in my opinion increase confusion and decrease readability.)
- pklausler 10y agoWhen coding in C, I often package the state that's shared between a high-level function and its local subroutines in a local "struct context" that's instantiated in the high-level function and then passed by address as the first argument to the subroutines. Makes it easy to see what the shared state is, and adding/changing the shared state doesn't require changing all the formal and actual argument lists.
- amirouche 10y agoMe too. OOP is actually having several such states. My go to pattern is to root states in an application tree.