当前位置:网站首页>什么是无副作用的函数方法?如何取名? - 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
边栏推荐
- Every day we say we need to do performance optimization. What are we optimizing?
- 文本去重的技术方案讨论(一)
- 給萌新HTML5 入門指南(二)
- 【Flutter 實戰】pubspec.yaml 配置檔案詳解
- GDB除錯基礎使用方法
- 接口压力测试:Siege压测安装、使用和说明
- 大数据应用的重要性体现在方方面面
- [performance optimization] Nani? Memory overflow again?! It's time to sum up the wave!!
- 50 + open source projects are officially assembled, and millions of developers are voting
- Pattern matching: The gestalt approach一种序列的文本相似度方法
猜你喜欢
随机推荐
高级 Vue 组件模式 (3)
容联完成1.25亿美元F轮融资
nlp模型-bert从入门到精通(二)
Cocos Creator 原始碼解讀:引擎啟動與主迴圈
Serilog原始碼解析——使用方法
Asp.Net Core學習筆記:入門篇
Microservices: how to solve the problem of link tracing
Electron应用使用electron-builder配合electron-updater实现自动更新
直播预告 | 微服务架构学习系列直播第三期
iptables基礎原理和使用簡介
分布式ID生成服务,真的有必要搞一个
mac 安装hanlp,以及win下安装与使用
(2)ASP.NET Core3.1 Ocelot路由
神经网络简史
tensorflow之tf.tile\tf.slice等函数的基本用法解读
Asp.Net Core learning notes: Introduction
幽默:黑客式编程其实类似机器学习!
熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样
6.9.2 session flashmapmanager redirection management
C language 100 question set 004 - statistics of the number of people of all ages