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

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

那时书本或者网上是这么解释的 ““面向对象”是专指在程序设计中采用封装、继承、多态和抽象等设计方法。 ” 那么上面的案例代码也有抽象,也有封装,为什么还是算面向过程思维呢。 那么什么是面向对象呢?...如果我们不考虑第3点的后置处理。1,2点就是我们常见的模型。对于一般方法,我们可以抽象为: 1.非业务 2.业务 校验 我们在复用代码时发现有的情况下是不需要有校验存在的。...关于DDD领域驱动设计,推荐书籍: “《领域驱动设计:软件核心复杂性应对之道》 《实现领域驱动设计》 ” 为什么我们在使用贫血模型 看了上面的代码,我们可能会疑问:我使用贫血模型开发挺好的啊?...因此我总结为什么人们更愿意使用贫血模型呢: “ 充血模型相对贫血模型存在一定的设计难度,你需要多花时间思考哪些是对象本身的行为 面向过程的编程思想根深蒂固,很难改变 对代码没有太大负责态度,认为怎么简单怎么来...那么建议你多做一些的思考: 1.我的代码是不是面向对象的代码 2.我的代码设计是否遵循 高内聚,低耦合的设计标准 3.我的代码是否遵循设计原则,如单一职责原则,开闭原则等 4. ...

1.2K20

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

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

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

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

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

    10510

    为什么我在客户端发送信息的时候按发送按钮无法发到服务器端?

    一、前言 前几天在Python白银交流群【无敌劈叉小狗】问了一个Python通信的问题,问题如下:大家能帮我看看为什么我在客户端发送信息的时候按发送按钮无法发到服务器端?...具体的表现就是点了发送但服务器收不到,如下图所示: 二、实现过程 这里【啥也不懂】给了一个指导,他当时在赶车,电脑不太方便,让粉丝截图了代码,直接看图的。这里提出来了几个怀疑的点。...后来【啥也不懂】回到家后,帮忙修改了代码,就能顺利跑通了。 顺利地解决了粉丝的问题。 如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!...三、总结 大家好,我是Python进阶者。这篇文章主要盘点了一个Python库下载失败的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【无敌劈叉小狗】提出的问题,感谢【啥也不懂】给出的思路,感谢【莫生气】等人参与学习交流。

    14310

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

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

    1.5K30

    为什么我代码里面选择top1000的sd基因绘制热图呢

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

    1.7K10

    技术分享 | 为什么我的 MySQL 客户端字符集为 latin1

    问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 Latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装的 MySQL 字符集会不一样呢?...Latin1 [qinguangfei0511-5.png] 那么,为什么会这样呢,我们看下官方文档上是怎么说的:https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html...,MySQL 5.7 是 latin1 ,MySQL 8.0为 utf8mb4 ; 每个客户端工具都会检测操作系统的字符集,比如Linux系统LANG环境变量的值,如果MySQL支持操作系统的字符集,就会使用操作系统的...(这里支持包括不完全精确匹配时,OS字符集将映射到最接近的MySQL字符集);如果不支持,就使用客户端默认字符集; 我们知道en_US最接近的字符集就是Latin1,所以回到我们的问题,当服务器的字符集为

    2K30

    技术分享 | 为什么我的 MySQL 客户端字符集为 latin1

    问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装的 MySQL 字符集会不一样呢?...后,MySQL 客户端字符集变为了 latin1 那么,为什么会这样呢,我们看下官方文档上是怎么说的:https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html...,MySQL 5.7 是 latin1 ,MySQL 8.0 为 utf8mb4 ; 每个客户端工具都会检测操作系统的字符集,比如 Linux 系统 LANG 环境变量的值,如果 MySQL 支持操作系统的字符集...,就会使用操作系统的(这里支持包括不完全精确匹配时,OS 字符集将映射到最接近的 MySQL 字符集);如果不支持,就使用客户端默认字符集; 我们知道 en_US 最接近的字符集就是 latin1 ,所以回到我们的问题

    1.4K30

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

    如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~ 本文是“为什么我建议”系列第二篇,本系列中会针对一些在高并发场景下,我对于组内后台开发的一些开发建议以及开发规范的要求进行说明和分析解读...往期回顾: 为什么我建议在复杂但是性能关键的表上所有查询都加上 force index 在业务一开始上线的时候,我们线上日志级别是 INFO,并且在日志内容中输出了代码位置,格式例如: 2022-03...随着业务的增长,我们发现经常有的实例 CPU 占用非常之高(尤其是那种短时间内有大量日志输出的),我们 dump 了 JFR 进行进一步定位: 首先我们来看 GC,我们的 GC 算法是 G1,主要通过...模拟两种方式获取调用打印日志方法的代码位置,与不获取代码位置会有多大性能差异 以下代码我参考的 Log4j2 官方代码的单元测试,首先是模拟某一调用深度的堆栈代码: 然后,编写测试代码,对比纯执行这个代码...由此,我建议:对于微服务环境,尤其是响应式微服务环境,堆栈深度非常深,如果会输出大量的日志的话,这个日志是不能带有代码位置的,否则会造成严重的性能衰减。

    1.4K20

    Python3:我只用1行代码就下载全网视频,我被我的才华和颜值征服了

    you-get库使用 1、引言 最近加班有点多,所以小鱼也就没有什么精力去整理博文了。现在的状态,就好比坐船—>晕乎。白天保温杯里泡枸杞;晚上三个咖啡赶睡神。小屌丝:呦呵,写的还挺押韵。...小鱼:嘿嘿,你不说我都忘记了,我现在只用1行代码,就能把全网的视频都下载下来。小屌丝:… 2、代码实战 2.1 you-get介绍 今天我们来说的这个超神的黑科技下载功能,就是you-get!...语法 you-get 视频地址 没看错,就是这么简单,一行代码就可以下载了。 我们来实际演示一下,看看效果。 视频地址,咱就上B站随便找一个吃货的up视频下载。...2.3.1 指定存储和重命名 1、指定存储, ①是直接进入到需要下载的文件夹下,执行下载命令- ②命令行执行:you-get -o 存放绝对路径 视频地址接下来,我们就看下用命令行执行。...2.3.2 查看视频信息 小屌丝:鱼哥,我能不能先查看视频信息,在觉得是否下载。小鱼:这必须的。 命令如下: you-get -i 视频地址 非常清晰的展示视频的格式、清晰度、大小等信息。

    50520

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

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

    1.7K62

    1小时,不会代码的我如何完成 网易云音乐 大作业网页制作?(IVX 第2篇)

    小媛:好的,迫不及待了。 二、导航栏制作 1_bit:我们第一步先制作一个导航栏,下图黄色框选位置就是导航栏。 小媛:不会做… 1_bit:你不用打代码,我们画出来就可以了。...1_bit:当然图片的高度也要同样的去设置高度。 小媛:你的文本为什么会上下对齐?...1_bit:接下来我们再到页面1下创建一个行,将 logo 和图片的行包裹进去。 小媛:为什么要这么做? 1_bit:其实这样只是为了好分类而已。...1_bit:接下来我们更改行2的名称为标题,在标题下创建一个一个行用来包裹标题的几个选项。 小媛:为什么那一行从上面往下掉下来了?...小媛:好丑啊,为什么左右两边没黑色? 1_bit:那是因为你的宽度就是那么宽哟。 小媛:不是设置了外边距吗? 1_bit:外边距不是宽度。 小媛:啊!你坑我。

    1.9K30

    win10 uwp 简单MasterDetail UWP 导航List点击后退按钮页面更改大小修改显示修改我代码源码左右的列表和内容的相互操作

    本文是很简单的,一般和我一样渣都能大概知道。 代码是我在很大的压力会议上写的,不到一个钟,写完修改,和大家说。我写的很简单,可以修改我代码,可以自己写,下面我来说下如何写。...,可以去下我源代码https://github.com/lindexi/UWP 然后在按后退按钮,就把我们的hasFrame=false; 大概我们就把一个页面做好,Detail就显示我们点击传的str...那么我们在界面变化的是否,是否知道我们显示内容还是显示列表,这时就是我们得HasFrame,依靠这个选择ZIndex 修改我代码 现在需要说下,如何修改我的代码,作为你需要。...一般可以自己写一个,不过通过修改我的代码会让你更加理解 首先我们需要Model,这是你自己定义的,随便写 然后打开ViewModel,我们里面关键的有ObservableCollection的,这是列表...界面开始的Image可以换为你需要的,然后其他的可以选择不修改。 很简单使用。 源码 接着我们来说下我源代码怎么做。

    1.9K00

    Django_rest框架实践项目(二) 为什么很少的代码就可以实现增删改查?rest框架如何实现分页?页面实现登录按钮?权限控制

    之前已经创建了helloworld项目,并且我们只是写了很少的一点代码,就实现了对数据库的增删改查,为什么我们写了一点的代码,就可以实现增删改查呢? 之前的界面是 ?...为什么很少的代码就可以实现增删改查? 因为rest框架的路由,我们看我们写的路由 ?...具体步骤如下: 在setting文件的最底下,要写这样的代码 注意是大写 ?...对,只要在setting里面配置了那个,那么在浏览器页面就会出现分页的按钮。 实现登录按钮 我们现在看我们的页面 ? 顶部什么也没有,现在我们配置一下路由 ?...要实现登录的按钮,那么在url里面要加一句代码 api-auth这个名字是随便起的,后面就是规定好的 url(r’^api-auth/’, include(‘rest_framework.urls’

    92010

    浏览器 HTTP 协议缓存机制详解

    最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control、为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又没有带..." CONTENT="no-cache"> 上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。...而广泛应用的还是 HTTP头信息 来控制缓存,下面我主要介绍HTTP协议定义的缓存机制。 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 浏览器第一次请求流程图: ?.../Etag 地址栏回车 有效 有效 页面链接跳转 有效 有效 新开窗口 有效 有效 前进、后退 有效 有效 F5/按钮刷新 无效(BR重置max-age=0) 有效 Ctrl+F5刷新 无效(重置CC=...no-cache) 无效(请求头丢弃该选项) 具体请参考文末 Refer [6] 4、Refer: [1] 浏览器缓存机制 http://www.cnblogs.com/skynet/archive/

    1.4K50

    每天一道面试题——登录

    我相信有很多测试人员遇到这个面试题:假设有一个登录功能,页面包括用户名、密码、验证码、登录按钮、注册链接五个元素,请说出有哪些测试点? 我曾经也就这个问题问过一些职者,给大家举几个遇到的回答案例。...案例1: 有效用户名和有效密码 有效用户名和无效密码 无效用户名和无效密码 无效用户名和用小密码 用户名输入特殊字符或超过长度限制的字符串 密码输入特殊字符或超过长度限制的字符串 .........我听到第一个例子中的回答后,我常会反问求职者三个问题: 为什么要测试无效用户名的情况? “用户名输入特殊字符或超过长度限制的字符串”这个测试点,为什么要在登录功能上测试?...为什么不给出测试通过的标准? 第一个问题,有的人会说这是根据无效等价类的思想在测试啊,或者干脆就支支吾吾什么也说不上来。可问题是,这真的是无效等价类吗?...比如我会说用户名密码的验证上需要参考需求和代码实现,比如代码实现上是先验证用户名是否存在,若存在则继续验证密码....通过这样的小技巧,可以让我们的回答更接地气,突出我们更有实际的测试经验,更关注需求而非想当然的去做测试

    70830

    最详细的 Android Toolbar 开发实践总结

    Toolbar支持的特性 总之,与 Actionbar 相比, Toolbar 让我感受到Google满满的诚意。怎样?是否已经对 Toolbar 有大概的了解,跃跃欲试的感觉出来了有木有?...属性设置无效 刚开始使用Toolbar的时候,我的布局文件中是这样写的 ?...然后把所有用 android:xxx 设置无效的,都用 toolbar:xxx 设置即可生效。最终的布局代码如下: ? 到此即可解决 xml 中属性设置失效的问题,为什么会出现这种问题呢?...我猜测是因为这个控件是兼容版的控件,用 android:xxx 设置无效是的这些属性是在兼容包中,不在默认的Android SDK中,所以我们需要额外的引入。...坑二:Action Menu Item 的文字颜色设置无效 系统默设置了ActionMenu每个Item的文字颜色和大小,像ToolbarActivity在Google原生5.1系统下默认效果就是下面这样的

    92920

    探究position:fixed在css动画过程中的行为~

    动画的时候按下暂停按钮~鼠标的位置~ ? 然后就是调整设置~~ 建议去实地试试~调调各种布局属性 ?...可以从表现上看到 修改bottom的位置是无效的 , 同时修改margin-top也是无效的 只有增加bottom/top的属性才会出现这样的 , 后面试了left/right正常 , 并且配合margin...也是正常的 , 调节其值也是有效果的 从bottom修改为top的表现 , 可以看出这时候的布局是参照所参与transform变换的元素 还有postion:fixed会导致一丢丢的垂直位置偏移 这就奇了怪了...看来是需要真的了解fixed的布局的实现机制了~ 允许我先Google Google~ 找到了这篇~CSS3 transform对普通元素的N多渲染影响 还有这篇transform你不知道的那些事 剩下的读者继续谷歌吧...~ 我谷歌了一下原来问题2015的时候就被发现了~我就当作提供一个debug思路吧~ 利用Animations , 摸索差不多再更新个小结~[faceplam]逃~

    1.6K10

    探究position:fixed在css动画过程中的行为~

    补充: 是指transform动画 想要的效果 原本buttom_submit是通过position:fixed; bottom:0px;来定位到底部的, 然后结果显示那里做相同高度的padding的...这时候使用Animations工具了 , Chrome Devtools位置:3 dot -> more tools -> Animations , 设置比较慢的速度 动画的时候按下暂停按钮~鼠标的位置...~ 然后就是调整设置~~ 建议去实地试试~调调各种布局属性 可以从表现上看到 修改bottom的位置是无效的 , 同时修改margin-top也是无效的 只有增加bottom/top的属性才会出现这样的...看来是需要真的了解fixed的布局的实现机制了~ 允许我先Google Google~ 找到了这篇~CSS3 transform对普通元素的N多渲染影响 还有这篇transform你不知道的那些事 剩下的读者继续谷歌吧...~ 我谷歌了一下原来问题2015的时候就被发现了~我就当作提供一个debug思路吧~ 利用Animations , 摸索差不多再更新个小结~[faceplam]逃~

    1.7K60
    领券