关于什么是好代码,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等(作者【CoderBaby】)。...一匹跑得快(运行速度快),少生病(健壮),可以驮载各类货物(可扩展),容易辨识(容易看懂),病好治(bug好发现),高大英俊的千里汗血马是也 ?...什么是好代码,不好定义,但是关于什么是代码里的"坏味道",比较容易搞清楚。...笔者刚毕业,参与一个大型复杂的金融软件,核心业务类,函数1000行算小case,5000多行的不在少数,我的内心是哇凉哇凉的,还好大致逻辑比较清晰 类太大 一般不宜超过1000行,同样不绝对,jdk源码过千行的不少嘛...但是其复杂的数据结构和锁优化,代码了额外的内存消耗 未完待续,困了 注: 参考《Effective java》《重构 —— 改善既有代码的设计》《深入分析JAVA web技术内幕》 本文版权归作者和博客园共有
关于什么是好代码,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等。...一匹跑得快(运行速度快),少生病(健壮),可以驮载各类货物(可扩展),容易辨识(容易看懂),病好治(bug好发现),高大英俊的千里汗血马是也 坏味道 什么是好代码,不好定义,但是关于什么是代码里的"坏味道...",比较容易搞清楚,避免代码里的“坏味道",离好的代码就不远了,坏味道一二三及推荐做法: 代码重复 函数太长 如果太长(一般不宜超过200行,但不绝对),你自己都不太容易读懂,请不要犹豫,拆成小函数吧。...笔者刚毕业,参与一个大型复杂的金融软件,核心业务类,函数1000行算小case,5000多行的不在少数,我的内心是哇凉哇凉的,还好大致逻辑比较清晰 类太大 一般不宜操过1000行,同样不绝对,jdk源码过千行的不少嘛...个数据,则最后的容量 = ((10 + 10 * 2) * 2 + 30)) * 2 + 90 = 270, 会有4次重新分配内存和拷贝,费时间啊,我也懒,想耍啊 方法和类如果确实有业务场景需求不会被覆盖
Add Parameter Change Bidirectional Association to Undirectional Change Reference...
其实很多时候面试时会聊到重构的问题, 我自己的看法是重构是软件开发中不可缺少的一个环节, 并不是说需要重构的代码都是坏代码, 有时候是旧的代码架构不能适应新的需求, 而有时候是为了新技术的使用。...今天来说一下在代码重构中的一个技巧, 如何编写一段好的代码。 其实不止是重构,在平时开发中如果可以的话也尽量用下面这种方式写代码。...一段糟糕的代码是怎样的 举个例子, 在代码中需要启动某个组件,而启动组件可以带启动模式作为参数, 一般开发都会这么写这个接口方法 public void startComponent(boolean arg...… 进一步重构 可能你听说过这么个段子, 优秀的程序员在写代码时能迅速的将自己变成傻子, 印象中好像是说 Pony Ma 的… 如果是一个傻子程序员看这段代码有什么问题呢?...在没看到参数的名字之前,单看调用处是不知道 true 和 false是表达什么目标的。 不好理解么? 假设有一个新方法是启动一个模块,这里是它的调用 ....
但热炒的背后是什么? 什么是平台工程? 平台工程方法补充了 DevOps。该“平台”是一个内部环境,创建为开发人员构建和运行软件(例如应用程序、工具和工作流)的空间,且该环境安全且合规。...这些成本最常见的原因是开发人员为每个项目(甚至项目中的各个测试用例)启动单独的环境。另一个好处是,由于能够自动化在统一平台中工作的操作流程,因此能够大规模工作的可能性增加了。...为了使这种方法取得成功,必须在同一平台内部署软件。表面上看,这可能使平台工程方法看起来像是对生产力的限制,但它实际上可以释放开发人员的创造力,并显著减少日常繁琐工作。 构建与购买:组织如何实施?...在此模型中,每个组织的平台都是定制构建的,但它位于现有、受支持、可购买的工具之上。通过这种方法,组织可以摆脱构建与购买的两难境地,并专注于微调其平台以满足其组织的需求。 它要成为常态,需要发生什么?...如果没有组织中每位开发人员的全力支持以及高级团队成员的支持,企业将无法成功实施平台工程。 为什么开发人员应该关心? 对于大型软件工程组织来说,拥有庞大而复杂的技术堆栈很容易。
本文是本学期第一篇,聊一聊什么是好的R包。这个问题源于年前一个同学,她在学习R语言,然后拿着一张总结的一些R包的图片问我:还有没有更好的包?当时就把我问蒙了,问她什么是更好的包?...她说是新更新的或者被大家所公认的包。我说你发的图里面的都是啊。。。然后就结束了对话。 ? 就是这张图 其实在她问我之前我从来也没想过什么算是“好”的包。...一直以来都是需要什么功能,找到有这个功能的包就直接用了,因为我觉得虽然有不同的包可以做同样的事情,但是核心的计算结果肯定是相同的,差别也就在命令参数和结果展示的差异。...那么什么是好的R包呢,对于我们这些只需要用R来做生信分析的人来说,如果功力没有那么深厚,看不懂R包的源代码,确实需要找到一些普遍都在使用且坚持更新的包,不仅仅不容易出错,而且网上这些包的学习资料也更多。...有了一定基础后就可以自己造轮子,自给自足;多关注生信方法类的杂志,经常会有新包发布。
错误信息是我们在线日常生活的一部分。每次服务器故障或没有网络,或忘记在表格中添加一些信息,我们就会收到错误信息。"出错了" 是常见的做尘。但是什么出错了?发生了什么?...而且,最重要的是,我要怎么做才能修复它? 图片 那怎样写才是一个好的提示呢? 在介绍好的提示之前,我们先来看一下什么是不好的错误提示。...例如:你不能获取我的数据?我的凭证被拒绝了? 这些专业术语对用户来说并不重要,他们只想知道什么地方出了问题,如何解决。 Passing the blame: 甩锅:比如「无法连接到三方服务」。...好的错误提示 图片 Say what happened and why: 说明出错的原因:让用户清楚的知道发生错误的原因,可以通过视觉和文字的结合来完成。解释用户为什么会出现这个错误。...代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
对于什么是好的编程语言,他发表了一篇文章分享了自己的观点。以下是他的全文: 这篇文章改编自我在 Cygni 科技峰会上的一次演讲。...那么程序语言的选择有多重要呢?有没有一种语言可以被认为是完美的? 什么是好的语言?...我认为这听起来是一个很好的方法,尽管我还想补充一点,编程在某种程度上也应该很有趣。 随后,Tony Hoare 提出了一些好的编程语言应该具备的特性: 最重要的是简单性。...很难预测性能,一个小的重构会导致代码运行速度减慢几个数量级,甚至有经验的程序员也很难诊断它。 你需要监控你的内存使用情况,因为它会在一些输入上突然爆炸。...每一种现代编程语言都需要一种处理并发性的好方法,我们不能寄托于运气了。那该选哪一种呢? ?
重构,是任何一个技术团队都无法绕过和回避的话题。...重构的原因有很多,可能是伴随着业务的发展与升级,系统无法快速支持需求迭代,这时就有了重构的念头,一般情况下不建议对老系统进行重构,毕竟重构是有代价的。...我最近参与了一个重构项目,接下来给大家分享下,我在重构业务系统过程中的经验总结。 1....了解系统 接到重构任务后,不要立刻动手执行重构,而是对当前的业务流程和架构状态有个清晰的了解,如果开发过当前系统的同事还在公司,一定要拉着同事好好讨论。 我们要知道系统一定是给人用的,是给哪些人用的?...不同的人使用系统的侧重点有哪些不同?他们使用系统主要是解决什么问题?这些问题我们一定要弄清楚。
那么作为外行,什么是“坏代码”? 作为一个每天大约 5 个小时编写、审查和重构代码(意思是,以更简洁和可用的方式重新编写)的人,我知道什么是代码(以及什么是坏代码,相信我!)。...有时我忽略了一个事实,即许多人对代码是什么,没有概念。 对于那些人,我对 “你是程序员,你是做什么的?”...那么回到这一节标题中的问题 — 什么是 “坏代码”? 按照我们对小门的微小组合的比喻,我会说坏代码意味着你有太多的门,以不必要的重复或复杂的方式排列。...另一方面,好的代码同样只需要稍微调整,在连接的旋钮侧使用更大的轮子: 总结 如上所述,当需求很简单时,好的代码通常看起来有点过头,但当客户需求发生变化时,好的代码就会真正发光发热。...然而,从本质上讲,专业编码是一种协作努力,无论您编写什么代码,无论是现在还是将来,其他程序员都需要不断地阅读和接手这些代码。如果代码能尽可能容易被理解,这些程序员的工作将会更容易和更有效率。
这点我以前确实没想过 刚看到这个观点的时候,我是很不以为然的,谁让它标题不吸引人>>>《构建测试体系》 就这标题,谁不知道要测试啊。还好我没有“以貌取文”,我认真的看了下去。...为什么调试会花掉大把时间,因为工程大啊,你说它突然来个段错误,你知道是哪里段错误?段错误会死机,那不死机的呢?...每个类都配备测试代码,烦不烦啊你? 烦。但是项目run的时候爆了烦不烦?那会儿可就不是一个人烦了,那是一个团队一起烦。...就比方说上次我们服务器客户端对接测试一个项目,中间数据传输出问题了,好了,现在是谁的问题都不知道。。。 然后测试端也只能跟后边等着了。...行吧,我写,那怎么写啊? 怎么写那是个人自己的事情。但是,我想说的是,测试代码,最好写在功能类之前,这样可以预先界定功能类的具体功能,也可以把思路清晰一下。 至于测试代码要测试哪些东西?
关于测试用例的话题,我之前已经写了 12 篇相关文章了 今天想说说「什么是好的测试用例」。...这个话题的争议很多,每个人的理解千差万别,比如我用搜索引擎搜索关键词「什么是好的测试用例」,百度返回 1960 万条结果,Google 返回 574 万条结果。...); 2、好的测试用例要有重复性; 3、好的测试用例必须清晰地定义一个或者多个期望的结果以及测试通过和失败的标准; 4、好的测试用例是没有冗余; 5、好的测试用例能覆盖更多的测试需求 答复二(百度知道...,我赞成茹老师的观点,好的测试用例应该是一个完备的全集,覆盖所有需要测试的地方;从迭代测试的角度看,我更同意能发现 Bug 的用例就是好用例。...所谓的迭代的角度,我指的是迭代过程中的修改,这时候设计的用例如果能针对迭代的具体修改点,以及修改点的影响范围去设计针对性用例,效果会更好,效果最直接的体现当然是能否发现 Bug 了。
C语言杂谈 什么是好的c/c++程序员? c/c++程序员就应该有c/c++程序员修养 什么是好的c/c++程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。...2、积极向上的态度,有创造性思维。 3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,戒骄戒燥。 5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。...我看过许多程序,没有注释,没有缩进,胡乱命名的变量名,等等,等等,我把这种人统称为没有修养的程序,这种程序员,是在做创造性的工作吗?...有句话叫“字如其人”,我想从程序上也能看出一个程序员的优劣。因为,程序是程序员的作品,作品的好坏关系到程序员的声誉和素质。而“修养”好的程序员一定能做出好的程序和软件。...有个成语叫“独具匠心”,意思是做什么都要做得很专业,很用心,如果你要做一个“匠”,也就是造诣高深的人,那么,从一件很简单的作品上就能看出你有没有“匠”的特性,我觉得做一个程序员不难,但要做一个“程序匠”
人生苦短,我用 Python。 程序员的追求就是不写代码,早日财务自由。不对,一不小心把实话说出来了,应该是将代码写得简洁,优雅。...Python 程序员的追求则是 Pythonic,正好在 Python 这门语言中,「隐藏」了特别多方法,可以使代码变得简洁,优雅,与众不同。...我在这里总结了一些常用操作,特别是关于列表和字典,分享给大家。 第一个字母大写 这个方法有点意思,无意中发现的。...它们之间的区别有两点: sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原来的基础上进行操作。...sort() 是应用在列表上的方法,而 sorted() 可以对所有可迭代的对象进行排序操作。
重构不止是代码整理,它提供了一种高效且受控的代码整理技术 2、为何重构 改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上。...3、何时重构 任何情况下我都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。...三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见的重构时机是想给软件添加新特性的时候; 重构的另个一原动力是:代码的设计无法帮助我轻松的添加所需要的特性...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。...如果这两个重构手法都需要用到,我会首先使用搬移字段,再使用搬移方法。 如果一个类承担了太多责任而变得臃肿不堪,这种情况下会使用提炼类将一部分责任分离出去。
作者:小村医 https://www.jianshu.com/p/3f04b6aebad2 狗屎一样的代码如何重构? 重构不止是代码整理,它提供了一种高效且受控的代码整理技术。...3、何时重构 任何情况下我都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。...三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见的重构时机是想给软件添加新特性的时候; 重构的另个一原动力是:代码的设计无法帮助我轻松的添加所需要的特性...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。...如果这两个重构手法都需要用到,我会首先使用搬移字段,再使用搬移方法。 如果一个类承担了太多责任而变得臃肿不堪,这种情况下会使用提炼类将一部分责任分离出去。
狗屎一样的代码如何重构? 重构不止是代码整理,它提供了一种高效且受控的代码整理技术。...提高编程速度:良好的设计是快速开发的根本,改善设计、提高可读性,减少错误,这些都是提高质量。 3、何时重构 任何情况下我都反对专门拨出时间进行重构。...三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见的重构时机是想给软件添加新特性的时候; 重构的另个一原动力是:代码的设计无法帮助我轻松的添加所需要的特性...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。...如果这两个重构手法都需要用到,我会首先使用搬移字段,再使用搬移方法。 如果一个类承担了太多责任而变得臃肿不堪,这种情况下会使用提炼类将一部分责任分离出去。
,我们为iOS付出那么多,不应该随便放弃吧 什么样的代码才是好代码?...我个人更喜欢简单的可读性高的代码,我主要从以下几个维度衡量代码是否良好: 一、代码是可工作的 写代码的目的是要为了解决特定问题的,因此无论如何,代码首先是可工作的,能解决特定的问题。...从 coding style 角度来说,有意义的命名、添加必要的文档和注释、类和方法不要太长、每一行也不要太长、添加必要的空行以及必要的缩进等,具体可以参考《C++编程规范》和《重构改善既有代码的设计》...其实判断代码是否内聚一个比较简单的方法就是看你能否给代码或者服务给一个贴切的名字,如果代码功能不内聚,我们是很难用一个简短的名字来表示它的含义的。...本文只是描述我心中的好代码,并不打算说明如何编写好代码,那需要太多的篇幅和太多的争议。所以,至此为止。
文章作者:途索 阿里巴巴 算法专家 内容来源:《数据分析通识》 导读:什么样的模型是好的模型?相信这是每一个数据分析师和大数据AI算法工程师都曾经默默思考过的问题。...可见,模型是现实世界的浓缩和模仿,一个好的模型,就一定是一个可以以尽可能低的成本,同时尽可能真实地反映客观世界概况的模型。...一个好的模型,应该是在一定的数据规模和数据维度的条件下,可以最接近上界的映射反应。 2. 好的模型,是一个可以反映真实业务关系的模型。 靠近数据与特征确定的上界,主要依赖模型自身通过参数的调节能力。...例如,在SVM模型中,我们会认为不同分类之间的分类超平面应该距两个分类的支持向量间的距离是相等的并且是最大的。但是为什么?这是因为我们认为两个分类间的间隔就应该如此,这是在“业务”上带入的假设。...此时参与者自我感觉良好,想知道自己身体状态不佳是为什么,表现在哪里。此时,如果模型可解释性不强,就得不到相应的衍生结论。 模型的可解释性同时也可以为接下来业务的提升与改进提供非常有意义的指导与借鉴。
领取专属 10元无门槛券
手把手带您无忧上云