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

每个程序员都该知道的 5 个定律

在 Java 或 C# 中,String 对象是不可变的,我们学会使用其他结构动态创建字符串,比如 StringBuilder。...但事实上直到你分析完个应用程序前,你并不知道 String 对象创建了多少次并对性能的产生多大影响。所以首先编写尽可能整洁的代码,之后在必须的时候再优化,往往这样做更有意义。...并且,正如所有其他性能问题,你在优化前要测量开销。...另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。事实上,每个会议成员都会表达自己的意见,使得建车棚的决议所花费的时间远远超过建反应堆的。...这条定律在软件行业十分出名,这个故事随后也被称为车棚效应 举个例子,开发者会花费更多时间到讨论正确缩进或函数命名,而不是讨论类的职责或应用架构。

55280

每个程序员都该知道的 5 个定律 转

在 Java 或 C# 中,String 对象是不可变的,我们学会使用其他结构动态创建字符串,比如 StringBuilder。...但事实上直到你分析完个应用程序前,你并不知道 String 对象创建了多少次并对性能的产生多大影响。所以首先编写尽可能整洁的代码,之后在必须的时候再优化,往往这样做更有意义。...并且,正如所有其他性能问题,你在优化前要测量开销。...另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。事实上,每个会议成员都会表达自己的意见,使得建车棚的决议所花费的时间远远超过建反应堆的。...这条定律在软件行业十分出名,这个故事随后也被称为车棚效应 举个例子,开发者会花费更多时间到讨论正确缩进或函数命名,而不是讨论类的职责或应用架构。

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

    每个程序员都该知道的10大编程格言

    每个程序员都该知道的10大编程格言(Kevin Pang): 编程格言1:无风不起浪 (There is no smoke without fire) 编程格言2:预防为主,治疗为辅(An ounce...comes great responsibility) 1.无风不起浪(There is no smoke without fire): 设计糟糕的代码通常表现以下 的一些现象: 巨大的类或者方法...虽然促使软件崩溃的原因还有其他因素(我们将在其他地方接触到),但(对“破窗”)置之不理,肯定会更快地加速系统崩溃。 简而言之,好的代码会促生好的代码,糟糕的代码也会促生糟糕的代码。...每个作品都是一个开发者的缩影。糟糕的代码发布的越多,就越容易反映现状。如果你不去努力编写优秀、整洁和稳定的代码,那你每天都将和糟糕的代码相伴了。...其他例子参见《软件Bug引发的十次严重后果》。这些例子便说明了我们正行使着多大的权利。你今天写的代码,无论你是否有意,说不定有朝一日在重要的应用程序中派上用场,这想想都令人害怕。

    1.4K10

    每个程序员都该知道的五大定律

    所以你必须确保你设计的架构在每个层级都可以应对故障。...最重要的是理智地做出决定,了解其他选项,清楚你为什么不选择它们。开发者日复一日的生活中,我们每天都做无数个大大小小的决定。...另一边,建车棚是一般人都可以做的,每个人都可以对颜色有意见。事实上,每个会议成员都会表达自己的意见,使得建车棚的决议所花费的时间远远超过建反应堆的。...这条定律在软件行业十分出名 举个例子,开发者会花费更多时间到讨论正确缩进或函数命名,而不是讨论类的职责或应用架构。...这是因为每个人都能认知几个字符的变动,但项目架构的变动则需要巨大的认知负载 你能注意到的车棚效应的另一个例子是 Scrum 演示。

    1.3K50

    有关网页渲染,每个前端开发者都该知道的那点事

    在渲染树中,每一段文本字符串都表现为独立的渲染器。每一个渲染对象都包含与之对应的DOM对象,或者文本块,还加上计算过的样式。换言之,渲染树是一个文档对象模型的直观展示。...对渲染树上的每个元素,计算它的坐标,称之为布局。浏览器采用一种流方法,布局一个元素只需通过一次,但是表格元素需要通过多次。 最后,渲染树上的元素最终展示在浏览器里,这一过程称为“painting”。...(缩放,滚动); 伪类激活(悬停)。...因此,你应该把访问元素属性的操作都组织在一起,从而优化网页性能。([你可以在JSBin查到更为详细的例子](http://jsbin.com/duhah/2/edit?...以下是CSS选择器的性能排名(从最快者开始): 识别器:#id 类:.class 标签:div 相邻兄弟选择器:a+i 父类选择器:ul>li 通用选择器:* 属性选择:input[type="text

    1.3K80

    每个UI UX设计师都需要知道心理学

    我们就从隔离效应开始: 隔离效应 Von Restorff效应预测(也称为隔离效应),当存在多个相似的物体时,与其他物体不同的物体最有可能被记住!...“当存在多个类似物体时,与其他物体不同的物体最有可能被记住!” 序列位置效应 序列位置效应是用户最好记住系列中第一个和最后一个项目的倾向。 ?...每个项目都将“主页”和“配置文件”项目全部放在左侧和右侧,并考虑到序列位置效应。 认知负荷 认知负荷是指一个人工作记忆中正在使用的注意力或者精神力总量。...简而言之,我们的大脑可以很容易地将靠近的物体归为一类,比它们间隔很远的物体是另一类。这种聚类的发生是因为人类具有自然的组织和组合东西的倾向。 ?

    32030

    每个数据科学家都需要知道的5种采样算法

    创建一种算法,从该流中随机选择一个项目,以使每个项目均被选择的可能性相同。 我们该怎么做? 让我们假设我们必须从无限流中采样5个对象,以使每个元素具有相等的被选择概率。...elementprint(reservoir) ------------------------------------ [1369, 4108, 9986, 828, 5589] 从数学上可以证明,在样本中,每个元素都具有从流中选择的相同概率...因此,每个项目都具有相同的被选择概率:2/3或通常为 k / n。 随机欠采样和过采样 ? 我们经常遇到不平衡的数据集。 处理高度不平衡的数据集的一种广泛采用的技术称为重采样。...它包括从多数类中删除样本(欠采样)和/或从少数类中添加更多示例(过采样)。 让我们首先创建一些不平衡数据示例。...import SMOTE smote = SMOTE(ratio='minority') X_sm, y_sm = smote.fit_sample(X, y) imblearn 程序包中还有许多其他方法可

    71020

    C# 如何写出一个不能被其他程序集继承的抽象类

    我需要限定某个抽象类只能在我程序集类实现,而不支持其他程序集实现,也就是我需要一个不能被继承的抽象类 在 C# 里面有抽象类和接口,这两个都是期望被继承才能被使用,而抽象类是可以做到只能在自己程序集和程序集可见的其他程序集实现...,而在其他的程序集是不能实现 在开始告诉大家如何写之前,需要说明在什么时候需要使用这个方法 有一些接口或方法等需要传入一个抽象的类,但这个抽象类里面有很多方法或属性的定义是和程序集内逻辑相关的,也就是开发者如果直接在外面继承这个抽象类实现出来的一定是不符合预期的...此时就需要用到本文的方法 此时就不能使用接口,因为接口是无法限制只能在程序集内实现,也就是在程序集外依然可以用户自己定义 写出一个只能在程序集内继承的抽象类的方法是在抽象类里面放一个需要被重写的部件,这个部件的访问优先级为程序集内...这样的写法在框架里面有很多,例如 WPF 框架里面的 Brush 画刷就是这样做的,请看 Brush.cs 的实现 在 WPF 里面认为画刷资源是不能给开发者自己写的,因为开发者应该不能了解画刷是如何做的,而在很多类的属性或方法参数都需要传入画刷...,因为画刷有纯色画刷等,不能写统一的画刷,于是就通过抽象类,用本文的方法做到让开发者只能用程序集里面定义的画刷。

    42320

    有必要为每个类都定义接口吗?

    如果落实到具体的编码,“基于接口而非实现编程”这条原则中的“接口”,可以理解为编程语言中的接口或者抽象类。...省略其他无关代码......为实现类定义抽象的接口。具体的实现类都依赖统一的接口定义,遵从一致的上传功能协议。使用者依赖接口,而不是具体的实现类来编程。 我们按照这个思路,把代码重构一下。...是否需要为每个类定义接口? 看了刚刚的讲解,你可能会有这样的疑问:为了满足这条原则,我是不是需要给每个实现类都定义对应的接口呢?在开发的时候,是不是任何代码都要只依赖接口,完全不依赖实现编程呢?...做任何事情都要讲求一个“度”,过度使用这条原则,非得给每个类都定义接口,接口满天飞,也会导致不必要的开发负担。

    1.5K51

    搞了这么多年终于知道接口和抽象类的应用场景了

    为什么不直接在类里面写对应的方法, 而要多写1个接口(或抽象类)? 既然接口跟抽象类差不多, 什么情况下要用接口而不是抽象类. 为什么interface叫做接口呢?...这个是继承动物类的哺乳动物类, 后面的老虎山羊等都继承自这个类....Mammal类自然继承了Animal类的3个抽象方法, 实体类不再用写其他代码. abstract class Mammal extends Animal{ } 3.3 Reptile类 这个是代表爬行动物的抽象类...蛇类继承自Reptile(爬行动物) 移动方法和喝水方法都跟其他3动物有点区别. class Snake extends Reptile{ private static String name...而接口跟抽象类类似, 这个就回答了不本文第一个问题. 1.为什么不直接在类里面写对应的方法, 而要多写1个接口(或抽象类)? 四. 抽象类解决不了的问题.

    12K2823

    你知道经管类的核心期刊都分布在那里吗?

    最近在看文献,看的有些烦躁了,想找点儿熟练练练手,刚好看到百度百科有这个关于经管类核心期刊的汇总表,顺手就抓过来练习练习。...本来百度百度中核心期刊栏目的列表里,关于经济学72中核心期刊的详细地址不全,我申请了编辑字条,编完一直在审核,想想算了,根据百度百科的审核流程和效率,估计不知道要申到猴年马月了,自己搜了确实的地址信息。...names(mangement)<-c("Name","Address");mangement$Class<-"M" 打开数据编辑器,自己把缺失的地址补全 fix(economic) 剔除掉地址中的哪些邮箱类信息...经管类总体数量分布: 提取出所有的地址中地级市数量: diyufenbujing<-myfulldata$Address diyufenbu<-sub("中国","",diyufenbujing) part1...不知道大家看了以上核心期刊的地域分布滞后,内心作何感想呢,本来想写几句短评到的,但是害怕被喷,再者自己是个学渣,这个话题不适合我~—~,有啥感想,都可以写在底部评论里,让我看到你们的声音!

    76930

    作为开发人员,这四类Code Review方法你都知道吗?

    下文阐述了4种主流的代码审查(code review)类型,相信作为专业的开发人员,你应该都了解它们! 每个专业的软件开发者都知道,代码审查是任何正式开发过程中的必要环节。...例如,在我的团队里,我们规定,每天上午,每个开发者在开始做其他工作之前,都要先处理积压的代码审查任务。同样的,在中午午休结束后也需要这样做。 因为在较长的休息时间后,开发者已经不处在他的代码思路中了。...其他开发者尝试寻找着潜在的缺陷,发表评论,给出如何改进代码的建议。 我不认为任何团队和长期地使用偶尔代码审查的方式。...我只想到这个类型适用于的一种情况:当整个团队都没有代码审查的经验时,让把每个人聚起来,一起做代码审查,这样弄几次之后,可能会帮助每个人理解代码审查的目标和意义。...你知道其他的、我这里漏掉的代码审查类型吗?请在评论里让我知道吧。 下次再聊。保重。

    74110

    分享15个有用的,你可能还不知道的CSS小技巧,建议每个前端开发者都了解下

    如果你还有其他问题,请随时提问。...使用*选择器可以方便地将样式应用于网页上的所有元素,无需逐个指定每个元素的选择器。这对于设置全局样式非常有用,例如设置默认字体、颜色或行高等。...需要注意的是,选择器会匹配页面上的每个元素,包括嵌套的元素。因此,在使用选择器时,你需要小心确保样式不会无意间影响到你不想改变的元素。...这对于创建交互式表单或其他需要根据子元素聚焦状态进行样式调整的情况非常有用。 通过使用:focus-within伪类,你可以轻松地为包含聚焦子元素的父元素设置特定的样式,以提升用户体验并增强交互性。...一些浏览器可能只支持部分样式设置,而其他样式可能会被忽略。因此,在使用::placeholder伪元素时,请进行充分的测试,并根据需要做必要的样式调整。

    21340
    领券