当前位置:网站首页>什么是无副作用的函数方法?如何取名? - 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
边栏推荐
- (1)ASP.NET Core3.1 Ocelot介紹
- 如果前端不使用SPA又能怎样?- Hacker News
- Vue.js移动端左滑删除组件
- 分布式ID生成服务,真的有必要搞一个
- C++和C++程序员快要被市场淘汰了
- “颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询
- Microservices: how to solve the problem of link tracing
- Troubleshooting and summary of JVM Metaspace memory overflow
- 哇,ElasticSearch多字段权重排序居然可以这么玩
- 10 easy to use automated testing tools
猜你喜欢
随机推荐
2018个人年度工作总结与2019工作计划(互联网)
7.2.1 cache configuration of static resources
Want to do read-write separation, give you some small experience
恕我直言,我也是才知道ElasticSearch条件更新是这么玩的
Basic principle and application of iptables
(1) ASP.NET Introduction to core3.1 Ocelot
Menu permission control configuration of hub plug-in for azure Devops extension
直播预告 | 微服务架构学习系列直播第三期
Elasticsearch database | elasticsearch-7.5.0 application construction
How to get started with new HTML5 (2)
Cos start source code and creator
Chainlink将美国选举结果带入区块链 - Everipedia
Computer TCP / IP interview 10 even asked, how many can you withstand?
Elasticsearch 第六篇:聚合統計查詢
Jmeter——ForEach Controller&Loop Controller
TF flags的简介
Every day we say we need to do performance optimization. What are we optimizing?
Didi elasticsearch cluster cross version upgrade and platform reconfiguration
JetCache埋点的骚操作,不服不行啊
Flink on paasta: yelp's new stream processing platform running on kubernetes