首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么写不出面向对象代码

那时书本或者网上是这么解释 ““面向对象”是专指在程序设计中采用封装、继承、多态和抽象等设计方法。 ” 那么上面的案例代码也有抽象,也有封装,为什么还是算面向过程思维呢。 那么什么是面向对象呢?...例如打印付款记录,创建订单,创建物流等等。如果我们都写在主体代码中,后面万一撤销功能(如撤消邮件通知,微信通知),这样肯定违反了设计原则中避开原则。...关于DDD领域驱动设计,推荐书籍: “《领域驱动设计:软件核心复杂性应对之道》 《实现领域驱动设计》 ” 为什么我们在使用贫血模型 看了上面的代码,我们可能会疑问:使用贫血模型开发挺好啊?...因此总结为什么人们更愿意使用贫血模型呢: “ 充血模型相对贫血模型存在一定设计难度,你需要多花时间思考哪些是对象本身行为 面向过程编程思想根深蒂固,很难改变 对代码没有太大负责态度,认为怎么简单怎么来...那么建议你多做一些思考: 1.代码是不是面向对象代码 2.代码设计是否遵循 高内聚,低耦合设计标准 3.代码是否遵循设计原则,如单一职责原则,开闭原则等 4. ...

1.2K20

为什么if-else会影响代码复杂度

关于if-else争议 之前写了一篇文章《用规则引擎消除if语句,提高了代码可扩展性》,这篇文章想阐述观点是复杂if语句可能会影响代码阅读和代码扩展性,会将非业务条件逻辑与业务逻辑混合在一起...时间长了代码会越来越臃肿,因此这种情况下推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来问题,文中发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...这里要阐明一个观点: “观点并不是说,我们在编码时不能使用if-else,而是说我们不应该简陋地用if-else去实现业务分支流程,因为这样随意代码堆砌很容易堆出一座座"屎山"。...” 当我们存在不同业务逻辑时,我们通常习惯使用if-else来实现这些不同逻辑,时间长了,代码就会难以维护。相信大部分人写过下面类似的代码。...屎山代码雏形 上面的代码(基于实际项目的伪代码),大家看了后有什么感想。如果我们需要修改上面的条件逻辑,相信编码者本人都会被这样代码绕晕,更不用说后面接手开发了。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

10%+10%=0.11?是bug还是feature?

手机阵亡了吗? %10+10%按理应该等于0.2,为什么会出现这样情况? ? 那么这是计算器BUG?还是另有隐情?是程序员不负责任,还是另有考虑? 真实情况 到底是怎么回事呢?...实际上,这些计算器并不是为数学家和工程师准备,但%引入,却可以极大方便计算折扣,税率,小费等。...那么在标准计算器或者说这些简单功能计算器中%到底是什么作用呢?...来源:公众号【编程珠玑】 ID:shouwangxiansheng 博客:https://www.yanbinghu.com 从代码角度来看 作为一个程序员,自然要从代码角度来看了。...为此在github上找到了微软开源计算器项目,其地址为: https://github.com/microsoft/calculator/ 找到关于%计算部分,摘出了其中相关代码: case

53510

震惊!10%+10%=0.11?是bug还是feature?

近日,关于手机计算器10%+10%=0.11事情火热,多个品牌手机未能幸免,基本“阵亡”,同时还包括了windows10自带标准计算器。你手机阵亡了吗?...%10+10%按理应该等于0.2,为什么会出现这样情况? ? 那么这是计算器BUG?还是另有隐情?是程序员不负责任,还是另有考虑? 真实情况 到底是怎么回事呢?...实际上,这些计算器并不是为数学家和工程师准备,但%引入,却可以极大方便计算折扣,税率,小费等。...来源:公众号【编程珠玑】 ID:shouwangxiansheng 博客:https://www.yanbinghu.com 从代码角度来看 作为一个程序员,自然要从代码角度来看了。...为此在github上找到了微软开源计算器项目,其地址为: https://github.com/microsoft/calculator/ 找到关于%计算部分,摘出了其中相关代码: case

57520

微软开源计算器项目告诉你答案!

作者 | 守望先生 来源 | 编程珠玑 前言 近日,关于手机计算器10%+10%=0.11事情火热,多个品牌手机未能幸免,基本“阵亡”,同时还包括了windows10自带标准计算器。...你手机阵亡了吗? %10+10%按理应该等于0.2,为什么会出现这样情况? ? 那么这是计算器BUG?还是另有隐情?是程序员不负责任,还是另有考虑? 真实情况 到底是怎么回事呢?...实际上,这些计算器并不是为数学家和工程师准备,但%引入,却可以极大方便计算折扣,税率,小费等。...那么在标准计算器或者说这些简单功能计算器中%到底是什么作用呢? 从代码角度来看 作为一个程序员,自然要从代码角度来看了。...为此在 github 上找到了微软开源计算器项目,其地址为: https://github.com/microsoft/calculator/ 找到关于%计算部分,摘出了其中相关代码: case

60320

还记得当初为什么选择计算机?代码人生旅程‍

还记得当初为什么选择计算机?代码人生旅程‍ 摘要 在这篇博客中,将探讨计算机科学魅力、编程乐趣和技术对个人成长影响。...引言 大家好,是猫头虎博主‍,今天和大家分享计算机之旅。自从选择了计算机,生活就像是打开了一扇通往未知世界大门。让我们一起探索这个充满可能领域吧! 1. 为什么选择计算机行业?...现在还从事计算机相关行业吗? 2.1 持续热情与挑战 没错,依然热爱这个行业。现在,不仅仅是编写代码,还在探索人工智能、大数据等前沿技术。每一天都充满了新挑战和机遇。...2.2 从学习者到分享者 开始撰写技术博客,分享在这个领域所学所感。希望经验能够帮助到正如当年一样编程初学者。 3. 计算机对的人生道路有何帮助?...3.2 开阔视野,连接世界 计算机科学让认识到了这个世界无限可能。通过网络认识了来自世界各地朋友,交流技术,分享经验。 小结 计算机不仅是职业,更是探索世界工具。

8410

为什么同样代码就是跑不起来,同事却能跑起来?

不知道小伙伴们有没有遇到过标题问题,明明同样一套代码,在自己本地就是运行不起来,或者说在本地只改了一个无关痛痒代码,看上去人畜无害,结果就报各种乱七八糟错误,但是同事却能运行好好。...因为有的时候可能是最后一次提交代码有问题,但是同事并没有拉取有问题代码,这时候表现就是同事能正确运行,但是自己不行。...这种情况下其实你们代码版本是不一样,并不是标题提到一样代码,但是很多时候自己内心会以为代码是一样。...这种情况下如果回滚掉这段人畜无害代码过后能正确运行,那么不要怀疑,就是这段看上去人畜无害代码导致。...虽然说是这段代码导致,但是也不能说这段代码有问题,只能说是这段代码带来问题,比如有的时候引入了一个新 pom 依赖,项目就起不来了,很有可能就是这个依赖里面的 jar 包有冲突导致

1.3K30

用C++模拟奇怪手机计算器

风水轮流转,出道多年一向默默无闻手机计算器突然成了网红,类似手机计算器“全线阵亡”这样言论充斥各种媒体。...问题起源是网友发现手机计算器上计算10%+10%这样小学数学范畴运算时,手机计算器得出结果并不是标准数学答案0.2,而是让人觉得有点奇怪0.11!...这是不是手机计算器软件设计者出现bug呢? 手机上自带计算器已经出道多年了,开始时计算器只有加减乘除四则运算,并没有%,后来经升级才加入了%等一批新功能。...和计算机一样,计算器软件发源地也在西方,所以计算风格也是依照西方人使用习惯:西方人在计算小费、购物折扣、存款利益、利润增长等生活和工作场景时,非常频繁地使用到像x+x*10%、x+x*20%这样问题...为简化代码,本程序只考虑了加法和减法,输入数字默认是%前数字部分,负数代表减法(例输入200,表示为加200%,输入-20,表示减20%),0代表结束输入。在DEV C++下调试通过。

84800

为什么代码里面选择top1000sd基因绘制热图呢

实际上写完了这个全网最好差异分析代码:免费数据分析付费成品代码 就可以收工用来,但是永远不能低估粉丝疑惑数量,任何一个细节都会被拿出来剖析。...比如代码里面挑选了top1000sd基因绘制热图,然后就可以分辨出来自己处理数据集里面的样本分组是否合理啦。其实这个热图差不多等价于PCA分析图,被我称为表达矩阵下游分析标准3图!...为什么挑选top1000sd基因绘制热图 这个热图是为了说明本分组是否合理,就是看样本距离,这个时候你如果需要理解距离,那么你需要学习非常多细节知识。...和npc两个分组非常明显差异 为什么选择top1000sd基因绘制热图其实就是个人爱好,你可以探索top500,1000,2000,5000是否有区别。...top5000= cutree(p4$tree_col,2), group_list=group_list) 这个时候,你会发现,好像不一样,修改层次聚类类别数量

1.6K10

15 个初学者 JavaScript 项目来提高你前端技能!

对于这个项目,有必要使用 setTimeout 来确保我们时间得到正确更新。 5.计算器 计算器。没有它,任何 JavaScript 初学者项目列表都是不完整,我们在这里也不例外。...了解负责删除 div 中所有元素函数是如何编写很有用。在本例中,此函数删除了我们杂货清单中所有项目。 7. 小费计算器 使用此小费计算器,无需再围着桌子看谁在处理小费。...发现自己回头查看那个代码来帮助我解决这个问题。但是,有一点不同,那就是更改列表中每个项目的背景颜色功能。认为这是对项目的一个非常好补充,因为它使它看起来更好。...事实上,如果没有那个项目的代码可以依靠,将不得不再次观看抽认卡教程视频以检查是否正确地完成了这个项目。当然,这个项目确实有一些独特功能,因此弄清楚如何对这些部分进行编码是一项挑战。...实际上已经在视频游戏中看到了这种效果。现在可以在构建自己游戏时使用它。就代码而言,有趣是了解到我们并不总是需要 CSS 来制作很酷动画。

1.7K20

为什么建议线上高并发量日志输出时候不能带有代码位置

如果大家发现网上有抄袭本文章,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本文是“为什么建议”系列第二篇,本系列中会针对一些在高并发场景下,对于组内后台开发一些开发建议以及开发规范要求进行说明和分析解读...往期回顾: 为什么建议在复杂但是性能关键表上所有查询都加上 force index 在业务一开始上线时候,我们线上日志级别是 INFO,并且在日志内容中输出了代码位置,格式例如: 2022-03...在上面给出线程堆栈例子中,调用打印日志方法代码位置信息就是这一行:at com.xxx.apigateway.filter.AccessCheckFilter.filter(AccessCheckFilter.java...并且并不是堆栈中栈顶就是调用打印日志方法代码位置,而是找到 log4j2 堆栈元素之后第一个堆栈元素才是打印日志方法代码位置 Log4j2 中是如何获取堆栈 我们先来自己思考下如何实现:首先...模拟两种方式获取调用打印日志方法代码位置,与不获取代码位置会有多大性能差异 以下代码参考 Log4j2 官方代码单元测试,首先是模拟某一调用深度堆栈代码: 然后,编写测试代码,对比纯执行这个代码

1.4K20

阿里P8级架构师怎么处理电商业务中数值计算精度舍入溢出问题?

1 计算器灾难:10%+10%到底等于几? 我们人类以为是 0.2,可是打开手机计算器试试呢?...所以,手机计算器实际上在计算10%*(1+10%)= 0.11。 再通俗点一句话说清运算原理。以8+10%为例,为什么=8.8而不是8.1?一起读:8元钱,加上10%小费,一共是8.8元。...最早电子计算器并没有%,是后来加。作为后续改进,它一定解决了计算场景中常用痛点,而绝不是脑残。推测很可能是西方人计算折扣、小费、利息等常见场景。...与上面字符串初始化100和4.015相乘得到结果401.500相比,这里为什么多了1个0?...我们看一下Formatter类相关源码,可以发现使用舍入模式是HALF_UP(代码第11行): [watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw

72140

【Linux操作系统】常用指令(三)

tab :当我们只记得命令前几个字母,后面的字母想不起来时候,就可以输入记得前几个字母,然后按下两次tab键,就可以从所有命令中检索出所有已知字符开头命令。...假如我打印file.txt中所有带hello 99文本行,这个时候就可以grep 'hello 99' file.txt过滤出所有带'hello 99'文本行。...有了zip命令为什么还要有tar压缩命令?...解答:通过查阅资料了解到,有些Linux不支持直接zip压缩,而是要通过tar再gz形成压缩文件,这也就是为什么偶尔能看到.tar.gz压缩文件了,总结来说,就是因为这个文件是经历了打包再压缩过程...bc命令打开计算器完成简单运算  bc 全称: Binary Caculator 与管道相结合:  2.通过管道使用计算器:  echo '1+2+3' | bc 6.查看系统命令 uname

1.1K20

给ChatGPT小费能提高模型性能,给越多干活越卖力,说说就行不用真给

之后可以附加:「顺便说一句,不会给小费」,或者「要给20美元小费,获得一个完美的解决方案!」,又或者「要给200美元小费以获得一个完美的解决方案!」 三种色块是给不同金额小费表现。...实验:创建 Python One-Liners 实验主要目的是评估小费金额,是否会影响ChatGPT在生成Python单行代码响应质量。 这里响应质量根据生成有效代码行数来评估。...对于GPT-4 Turbo,使用非常明显提示方式,直接告诉它:「给我吐代码,more is better」 下面是程序中使用小费列表,金额从0到一百万美元不等。...下面的基本提示要求LLM提供Python单行代码,并强调单行数量是评估关键指标。提示还会附加本次提供小费金额。...三句话说明: 给太少不如不给,可以不爱,不要伤害,士可杀,不可辱 总体来看,也不是越多越好,貌似10美元性价比最高 不差钱的话,当然是越多越好 对此,网友又开始整活了: 「之前已经给了20美元小费

14410

为什么一行代码就可以完成3个R包RNA-seq差异分析呢

在教师节收到学生提问,刷B站74小时视频时候看到我演示了RNA-seq差异分析只用了一行代码就完成了3大R包全部分析,并且输出了对应图表结果,觉得很神奇,但是B站视频并没有配套讲义和代码还有测试数据...,为什么这么神奇呢?...下面的图表是如何自动出来呢? ? 因为这个 run_DEG_RNAseq 函数代码非常长,这里就不贴在公众号了哈,大家可以在GitHubGEO项目找到它!...GEO传奇代码 一不留神,这个GEO项目就成为了点赞数最多,直接孵化出12篇数据挖掘类SCI文章,至于间接那些就不计其数了,因为大家都是偷偷使用,也不告诉,甚至某些别有用心者还不告诉身边的人,要一个人独享这些代码...当然是啊,都会写代码了,还有什么是不能为所欲为呢? 同样代码也是在GitHub,需要你仔细理解,不过有一个小小要求,请不要把代码雪藏,或者刻意隐瞒。

1.6K62

为什么数据价值没法落地?因为你不懂他说“话”

过去IT时代我们只是简单使用数据,很少为了解决问题而提炼过数据。为什么要强调提炼过数据?...上个月,乘坐晚上七点飞机从杭州到北京,结果七点整时候,“飞常准”告诉航班延误了,一个小时后,它再次告诉延误继续,一直到晚上十一点。   ...信息化和数据化区别就在于,信息化为我们提供了参考,而数据化让我们可以直接行动。从给建议到直接行动,这之间有巨大鸿沟。 为什么数据价值没法落地?   如何让数据“说话”?...在过去信息时代,我们最擅长方法是根据历史数据统计规律,指引行动。比如我们会统计过去一个月周五下午六点出租车小费,计算出价平均数,然后告诉用户“建议给小费5元”。...比如我们可以获取不同街道堵塞程度,从而计算司机对小费敏感度;   我们可以集合附近天气情况,演唱会散场时间数据等等来预测某个时段,某个地段可能成交打车小费金额。

66740

Windows Universal 应用 – Tip Calculator

应用背景     Tip Calculator,这个应用程序灵感来自于外出就餐,老外一般有给服务员付小费习惯,而小费该付多少一般是根据服务员服务质量来。...在Tip.cs文件中加入以下代码,要注意两点,首先,设置Tip类为公共。...这样的话,可以不使用Switch语句,而直接获取Tag属性,计算小费。0.1表示10%,0.18表示18%,0.25表示25%。    ...那么,首先把Phone当中MainPage.xaml中页面布局代码拷贝过来,可以看到如下效果: ?    ...虽然我们界面上还有很多空余空间,但是大家可以发现,我们在Phone中xaml控件,在这里同样可以使用。     除了xaml代码,后台代码同样需要修改,主要是相关事件处理程序。

90280

如何让数据在产品中“说话”

作者:车品觉 ---- 为什么眼下大量企业数据案例难以凸显价值?其中很重要一点是,产品经理不懂数据。...过去IT时代我们只是简单使用数据,很少为了解决问题而提炼过数据。为什么要强调提炼过数据?...为什么数据价值没法落地? 如何让数据“说话”?在过去信息时代,我们最擅长方法是根据历史数据统计规律,指引行动。...比如我们会统计过去一个月周五下午六点出租车小费,计算出价平均数,然后告诉用户“建议给小费5元”。我们所使用 数据大多都是单一角度而静态数据。 而现在,我们更希望得到全景而动态数据集。...比如我们可以获取不同街道堵塞程度,从而计算司机对小费敏感度; 我们可以集合附近天气情况,演唱会散场时间数据等等来预测某个时段,某个地段可能成交打车小费金额。

79270

【UniApp】-uni-app-项目计算功能(苹果计算器)

前言本文主要介绍苹果计算器项目中计算功能实现在前面的文章中已经实现了输入,动态计算字体大小,以及计算器布局本文主要介绍计算功能实现正文实现/清空/改变正负/除以100inputText 已经实现了...丢失精度了这里不测试了,大家可以将除以 100 结果用 console.log 打印到控制台看一下,这里直接给出解决方案,在网上找了一个 a-calc 库,用它,就可以帮我解决这个问题。...,来看一下效果:实现计算操作嗯,到这基本上解决完毕了,接下来来看加减乘除,首先来看一个做加减乘除之前所需要解决问题,如下图:按下是 23 + 65,应该在按下 + 时候将 23 记录下来,再将本次运算符记录下来...12 然后按 +,在输入 12,然后按 +,这时候需要进行一次计算,因为按了两次 +,所以在第二次按 + 时候,需要将第一次计算结果进行计算,所以我在 operator 方法中,需要判断一下,...,欢迎点赞、收藏,你支持是写作最大动力正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

29210

从编程小白到全栈开发:响应用户操作

咳嗽连续咳了一个多月,蓝瘦,都快要忘记更新文章了...还好一个读友提醒怎么好久没更新了,才提起一口气,嘎吱嘎吱重新转起这磨损严重脑袋来。 懒,就一个字,只说一次......你还记得否,我们之前已经写过了一个简易计算器代码?(What?你还没写?...快去先写一下吧,抄一遍也行啊,赶紧...)在那个简陋计算器中,我们点击计算器界面上“计算”按钮,程序就会为我们计算出结果。...好,那么问题来了: 为什么是点击了这个“计算”按钮,而不是页面上别的地方,才会执行运算并出结果呢? 因为...我们只给了这个按钮这样能力啊!...随着在输入框里输入,可以看到我们在键盘上按下内容以及键标识代码被一一打印了出来。 这些例子看下来,是不是觉得获取用户操作挺简单?确实很简单。

1.7K40
领券