当前位置:网站首页>什么是无副作用的函数方法?如何取名? - 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
边栏推荐
- 简直骚操作,ThreadLocal还能当缓存用
- Introduction to Google software testing
- 幽默:黑客式编程其实类似机器学习!
- 安装Anaconda3 后,怎样使用 Python 2.7?
- 如何在Windows Server 2012及更高版本中將域控制器降級
- 03_ Detailed explanation and test of installation and configuration of Ubuntu Samba
- Use of vuepress
- drf JWT認證模組與自定製
- Elasticsearch 第六篇:聚合統計查詢
- 面经手册 · 第12篇《面试官,ThreadLocal 你要这么问,我就挂了!》
猜你喜欢
随机推荐
遞迴思想的巧妙理解
幽默:黑客式编程其实类似机器学习!
微服務 - 如何解決鏈路追蹤問題
分布式ID生成服务,真的有必要搞一个
使用NLP和ML来提取和构造Web数据
DTU连接经常遇到的问题有哪些
Gradient understanding decline
大数据应用的重要性体现在方方面面
Jmeter——ForEach Controller&Loop Controller
《Google軟體測試之道》 第一章google軟體測試介紹
How to get started with new HTML5 (2)
The practice of the architecture of Internet public opinion system
In depth understanding of the construction of Intelligent Recommendation System
ETCD核心機制解析
你的财务报告该换个高级的套路了——财务分析驾驶舱
Flink的DataSource三部曲之二:内置connector
基于深度学习的推荐系统
Top 10 best big data analysis tools in 2020
keras model.compile损失函数与优化器
Menu permission control configuration of hub plug-in for azure Devops extension