[请益] 参数物件的使用

楼主: DongFeng   2017-07-10 23:21:59
在“重构-改善既有程式的设计”与“无瑕的程式码”中都有资料传输物件/参数物件的章节或描述
不过书中举的例子多是以成对存在或相关的数值为例子, ex: time range
在我个人的开发中有两种情况会写出带有很多参数的方法, 那就是新增跟更新
以新增为例方法会长得像这样: https://gist.github.com/anonymous/85443e3a7067e10bd44c12ac456ed39e
也看过写成这样的: https://gist.github.com/anonymous/d375b42e47a36fccf6de3490fb2f7089, 但这意味着要使用 create 方法必须了解内部用到了哪些 key-value, 所以我不喜欢这种写法
所以我就想能不能建一个物件, 然后把新增时会用到的数值全部写进里头后在丢进方法里头当参数: https://gist.github.com/anonymous/5efdefedab65cd4aaa80583d25a04f57
但这样做之后却又产生了新的疑问:
1. 要使用 create 的必须得了解 CreateUserParameters 开放了哪些 setter
2. 如果有一个 setter 没有被呼叫的话, 对应的数值将为 null
3. 目前我是把参数物件都放在 ParameterObjects 这个命名空间下, 是否需要扩展命名空间变成 ParameterObjects/UserRepository, 然后把 CreateUserParameters.php 改成 Create.php?
以上几个问题希望征询大家的意见, 如果有什么不妥的地方也请多多指教, 谢谢
作者: lvlightvivi (阿美)   2017-07-11 22:35:00
想问第三种是为了解决什么问题要多写一支来处理?

Links booklink

Contact Us: admin [ a t ] ucptt.com