当前位置:网站首页>什么是无副作用的函数方法?如何取名? - Mario
什么是无副作用的函数方法?如何取名? - Mario
2020-11-06 01:19:00 【解道jdon】
函数名称应描述函数所做的所有事情。换句话说,功能不应隐藏副作用。这符合“最小惊喜原则”。但是,有时候这并不容易。下面函数名词名副其实吗?
众说纷纭:
它会返回一个Cusomter,但是如果没有可用的Customer,它将创建一个没有参数的Customer。我将遵循GetCustomerOrDefault()的C#命名风格。
如果创建客户是完全封装的,并且没有外部代码会知道新客户和现有客户之间的区别,那么我认为这个名称很好。另一方面,如果没有封装,也许应该是两个功能。
坏名称不仅会降低可读性,而且通常是更深层质量问题的征兆。例如,如果找不到某个函数的好名称,则该函数的设计可能不好。您如何命名此功能?它的名称含糊不清,因为该函数没有内聚性。
取名TryGetCustomerOrInstantiate?
如果您需要副作用,我可以将其重命名为getCustomerOrDefault()之类的名称,以便消除副作用。如果不这样做,则对空客户抛出异常。您甚至可以同时使用这两种方法,具体取决于您的API需要多么精细。
它做了两件事:允许访问私人客户字段;如果缺少客户,则创建客户我建议避免这种编码方式!
banq:违反单一职责,做了两件事情;包含可变状态,带有副作用,无法让调用者调用getCustomer方法时确定返回一个Customer,不符号函数式编程原则。
版权声明
本文为[解道jdon]所创,转载请带上原文链接,感谢
https://www.jdon.com/55231
边栏推荐
猜你喜欢
向北京集结!OpenI/O 2020启智开发者大会进入倒计时
中国提出的AI方法影响越来越大,天大等从大量文献中挖掘AI发展规律
Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things
文本去重的技术方案讨论(一)
01 . Go语言的SSH远程终端及WebSocket
怎么理解Python迭代器与生成器?
免费的专利下载教程(知网、espacenet强强联合)
如何对Pandas DataFrame进行自定义排序
业内首发车道级导航背后——详解高精定位技术演进与场景应用
车的换道检测
随机推荐
從小公司進入大廠,我都做對了哪些事?
Chainlink将美国选举结果带入区块链 - Everipedia
Jmeter——ForEach Controller&Loop Controller
做外包真的很难,身为外包的我也无奈叹息。
Use of vuepress
01 . Go语言的SSH远程终端及WebSocket
文本去重的技术方案讨论(一)
ThreadLocal原理大解析
中国提出的AI方法影响越来越大,天大等从大量文献中挖掘AI发展规律
Analysis of ThreadLocal principle
事半功倍:在没有机柜的情况下实现自动化
Can't be asked again! Reentrantlock source code, drawing a look together!
(1)ASP.NET Core3.1 Ocelot介紹
DRF JWT authentication module and self customization
keras model.compile损失函数与优化器
tensorflow之tf.tile\tf.slice等函数的基本用法解读
幽默:黑客式编程其实类似机器学习!
业内首发车道级导航背后——详解高精定位技术演进与场景应用
车的换道检测
微服務 - 如何解決鏈路追蹤問題