当前位置:网站首页>什么是无副作用的函数方法?如何取名? - 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
边栏推荐
- 【Flutter 實戰】pubspec.yaml 配置檔案詳解
- Sort the array in ascending order according to the frequency
- C language 100 question set 004 - statistics of the number of people of all ages
- 使用NLP和ML来提取和构造Web数据
- 如何使用ES6中的参数
- 如何将数据变成资产?吸引数据科学家
- Electron应用使用electron-builder配合electron-updater实现自动更新
- python 下载模块加速实现记录
- 人工智能学什么课程?它将替代人类工作?
- 你的财务报告该换个高级的套路了——财务分析驾驶舱
猜你喜欢
随机推荐
谁说Cat不能做链路跟踪的,给我站出来
Listening to silent words: hand in hand teaching you sign language recognition with modelarts
xmppmini 專案詳解:一步一步從原理跟我學實用 xmpp 技術開發 4.字串解碼祕笈與訊息包
python 保存list数据
(1) ASP.NET Introduction to core3.1 Ocelot
DevOps是什么
DeepWalk模型的简介与优缺点
自然语言处理-搜索中常用的bm25
用Keras LSTM构建编码器-解码器模型
mac 安装hanlp,以及win下安装与使用
熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样
使用NLP和ML来提取和构造Web数据
01 . Go语言的SSH远程终端及WebSocket
6.7 theme resolver theme style parser (in-depth analysis of SSM and project practice)
7.2.1 cache configuration of static resources
DTU连接经常遇到的问题有哪些
10 easy to use automated testing tools
7.2.2 compressing static resources through gzipresourceresolver
“颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询
A debate on whether flv should support hevc