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

如何完美避免写出垃圾代码

在 GitHub 上有一个新项目,它描述了「最佳垃圾代码」的十九条关键准则,从变量命名到注释编写,这些准则将指导我们写出最亮眼的烂代码如何提醒自己完美避免写出垃圾代码呢?我们一起来看一看。...第十条:Type 使用需谨慎 一般不要指定变量类型或者经常做类型检查,无类型才是最好的类型。 ?...第十二条:嵌套的三角法则 如果代码有一些嵌套结构,或者说缩进空行的结构,三角法则是最漂亮的。 ? 第十三条:混合缩进 我们需要避免采用缩进,因为缩进会使复杂代码在编辑器中占用更多的空间。...第十六条:代码不需要做特定测试 这些测试通常是重复且无意义的工作。 第十七条:尽量避免重复代码 按想法写代码,尤其是在小团队中,毕竟这是「自由」准则。...第十九条:保存不必要的代码 在写代码的过程中,经常会产生很多测试代码。这些代码也是非常重要的资料,因此不能删除掉,最多只能注释掉。

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

【SVN】教你如何替换主干代码

:svn的主干上面有一份代码,svn的分支上面也有一份代码,这两份代码是完全不一样的,所以不能仅仅用分支替换主干就可以了,替换也会出错的。...项目的第一个版本开发完之后,我们接着对这个项目进行架构升级,所以之前的项目就不能用了,我们就在分支上面新建了一个新的项目,项目的架构搭建完之后,就需要将新架构的代码放到主干上面,原先主干上面的代码要标记版本放到...因为这种原因,所以我们需要将主干上面的代码替换成分支上新架构的代码。 应用场景说清楚了,接下来我们来具体聊聊解决办法。...第一个步骤:在本地副本上进行操作,选择主干上的源代码文件,右键选择tortoiseSVN菜单,点击合并。(将trunk代码 拉回本地,checkout到本地。...在trunk 代码上 使用merge)如图 ?

1.1K30

代码评审:人工 vs 自动化,质量 vs 效率

我们需要确保我们的代码评审不仅仅是一种形式,而是一种有效的质量保证手段。 自动化工具的作用 另一方面,我也认同自动化工具在代码评审中可以发挥重要作用的观点。...自动化工具可以帮助我们自动检测代码中的常见问题,如代码风格问题、潜在的性能问题、安全漏洞等。这可以大大提高我们的代码评审的效率,让我们能够更加专注于那些需要人类智慧和经验的复杂问题。...然而,我们也需要理解,自动化工具并不能替代人工代码评审。它们只能帮助我们发现代码中的一些机械性的问题,而对于那些需要深入理解代码逻辑和业务需求的问题,我们仍然需要人工进行评审。...结合人工和自动化 基于以上的分析,我认为最佳的代码评审方式应该是人工和自动化的结合。我们可以使用自动化工具来检测代码中的基础问题,然后再进行人工的代码评审,专注于那些自动化工具无法处理的复杂问题。...这样可以确保代码评审的质量和效果,同时也可以避免过度影响开发人员的正常工作。 总的来说,代码评审是一个复杂的过程,需要我们充分利用各种资源和工具,以达到提高代码质量和团队技术水平的目标。

25820

如何避免移动测试自动化失败

Denisenko 说,越来越多的公司希望开发人员可以负责开发可测试的代码和测试。她从一个人工测试人员成长为测试自动化工程师,相信测试人员的角色正在转变为软件开发测试或代码质量评估教练。...InfoQ 正在报道 2019 年的欧洲测试大会 ,有幸采访了 Nadya Denisenko ,与她谈论了在移动测试自动化中失败的方法以及如何避免失败。...集成测试是移动测试中的一个新浪潮,并不是每个开发人员都有足够的知识理解什么是集成测试,以及如何进行集成测试。有些人甚至没有学习的欲望。 InfoQ:在自动化移动测试方面,你学到了什么?...InfoQ:苹果和谷歌提供了哪些测试指南,我们应该如何使用它们?...谷歌试图培养一代知道如何在不同级别上测试代码的开发人员,最好是使用测试自动化。他们已经编写了很多关于这方面的教程,Google 的测试社区非常活跃。 然而,苹果鼓励开发者开发单元测试和 E2E 测试。

58220

如何避免写出烂的业务代码(1)

一.业务代码如何写烂的 java web开发通常都是mvc模式,从早期的ssh主键到Spring+ Mybatis。...虽然有接口和实现,但是按照这样一套写出来的代码基本上和面向过程写的代码没有什么区别。这种开发方式bean类只有属性,没有行为。...关键是发现之前的模型定义错了,数据库的ER图设计有问题,仍然不会去更改,因为总是有新的需求会来,然后拼了命的做需求,留下一堆烂代码无法维护,最后连自己都不想看。 二....领域模型是如何发挥作用的 比如说一个平台,一开始只有一种用户身份,后来平台做大了,开始做交易了,区分出了商家了,和买家了。产品提了个需求开发一个商家入驻流程,吭哧吭哧开发完了。

65520

.net程序源代码如何避免被反编译

许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。 什么是可移植的可执行文件?...当源代码被执行时,它会生成一个可移植的可执行文件。可移植的可执行文件(PE)不是DLL就是EXE。PE文件包含MSIL (Microsoft中间语言)和元数据。...MSIL最终由CLR转换为处理器能够理解的本机代码。元数据包含装配信息,如程序集名称、版本、文化和公钥。 如何从DLL或EXE获取源代码? 是的,我们可以从DLL或EXE获取源代码。...如我们在上面的截图中看到的,当我们打开EXE和Telerik JustDecompile,我们能够看到原始的源代码,这可能致使软件被盗版,最终会对你造成损失。 如何防止EXE和DLL被反编译?...保护EXE和DLL不被反编译到原始源代码的方法称为混淆。有很多付费和免费的软件可以提供混淆代码的功能,让.Net程序集代码变得模糊,不易理解。

1.9K20

谈谈代码如何避免写出糟糕if...else语句

.而随着项目的日渐发展,糟糕的if...else语句将会充斥在各处,让项目的可维护性急剧下降.故在这篇文章中,笔者想和大家谈谈如何避免写出糟糕if...else语句....由于脱密等原因.文章中的示例代码将会用一些开源软件的代码或者抽象过的生产代码作为示范....假设这是一个提交定时重启VM计划任务的“上古级”界面(因为好的交互设计师一定不会把界面设计成这样吧...).规则大概如下: 2.1 Simple类型的Scheduler Simple类型的Scheduler...Interval,和StartTime,这个时候已经可以提交定时任务了 2.1.3 RepeatCount是个可选参数 2.2 Cron类型的Scheduler Cron类型的Scheduler,可以根据...然而这种做法正是让程序更加的松耦合(因为使用委托可以方便的整体替换算法),使得整个项目更加茁壮。

11010

如何避免用动态语言的思维写Go代码

最大的问题还是因为以前用惯了PHP的数组,到写Go代码时还是不习惯先定义类型后使用这种习惯。还有就是以前写PHP的时候可能没养成使用异常的习惯,在返回值里约定特殊值来代表错误。...configs = []*Product { { StockNum: 100, Name: "芒果TV周卡", Type: "virtual", }, ...... } 这么做就能避免像上面那样使用...StockNum前还得把它转成整型的问题了,而且编辑器还能做类型提示,不需要你刻意记得Map里的键,还能避免你一时疏忽把键拼错导致BUG的尴尬。...说完这个在代码里出现率最高的问题后,下面我们再说几个写Go代码时的要注意的细节。...尽量不使用map[string]interface{}这种类型的参数,IDE也没法帮助提示这些参数的内部结构,这让其他人使用这个代码时就会很苦恼,还得先看看函数实现里具体用到了字典的哪些键。

61620

如何避免写出烂的业务代码(2)- DDD整改

背景 何避免写出烂的业务代码(1)一文中介绍过如何避免写出烂的业务代码,这边谈一谈领域驱动模型的实践 目前很多的业务代码存在以下问题 bean的创建太随意,基本就是一个需求一些对应的dto,vo,query...不同的后端/前端对接时,相同概念的命名存在差异,导致后面重构时数据访问沉淀到manager层,上层调用的时候处理case有问题 DTO类型的bean重构过程中根本不知道哪些是可以为Null...这样对于某一块的业务,还是没有将逻辑抽象到一起,也就不可避免的逻辑冗余 改进 ?...领域模型与微服务化 做上面结构的调整,除了能够提供代码规范性,另外一个好处就是做减小微服务化的改造代价。因为边界清晰,与其他业务的交互清晰。...其他服务与它的交互可以由service改成soa调用 潜在的问题目前的领域对象还是不够丰富 当领域对象多了,相同的编排/组合领域对象也可以成为一个独立的领域上下文,这时候如何定义这类领域

78130

如何利用策略模式避免if-else判断代码

示例 策略模式适用于根据不同类型的动态,决定使用哪种策略这样一种应用场景。我们先通过一个例子来看下,if-else 或 switch-case 分支判断逻辑是如何产生的。具体的代码如下所示。...如何来移除掉分支判断辑呢?那策略模式就派上用场了。我们使用策略模式对上面的代码重构,将不同类型订单的打折策略设计成策略类,并由工厂类来负责创建策略对象。...等后面讲到使用状态模式来避免分支判断逻辑的时候,你会发现,它们使用的是同样的套路。本质上都是借助“查表法”,根据 type 查表(代码中的 strategies 就是表)替代根据 type 分支判断。...具体的代码如下所示: 总结 策略模式定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码)。...策略模式包含一组策略可选,客户端代码如何选择使用哪个策略,有两种确定方法:编译时静态确定和运行时动态确定。其中,“运行时动态确定”才是策略模式最典型的应用场景。

67230

避免自动驾驶事故,CV领域如何检测物理攻击?

本文的研究内容可以应用于自动驾驶汽车和其他安全敏感领域,而本文分析的这些条件的子集也可以适用于其他类型的物理学习系统,例如无人机和机器人。...作者推断,如果这两种类型的测试都能产生较高的成功率,那么在汽车常见的物理条件下,该攻击很可能是成功的。...反过来,这些类型的攻击通常使用无界扰动来确保攻击对角度、照明和其他物理条件的变化具有鲁棒性。...攻击者也有可能通过误导热图区域,即热图提出一个不包括对抗区域的区域,以扩大定位的区域或完全避免检测。...不过,几篇文章中谈到的防御都是限定攻击类型的防御,如何对不可知的攻击进行有效防御仍值得进一步研究和探讨。

50330

爬虫抓取网站有什么技巧,要如何避免错误代码

我们在爬虫作业的时候,经常会遇到HTTP返回错误代码,那这些错误代码代表了什么意思呢?爬虫作业的时候又该如何避免这些问题,高效完成我们的项目?...1.robots.txt文件在进行网站爬取之前,我们需要了解目标网站是否允许爬虫访问,以避免违反网站协议。...2.User-Agent 在爬虫中设置 User-Agent 可以模拟不同的浏览器来访问网站,以避免被网站识别为爬虫并阻止访问。..., like Gecko) Chrome/58.0.3029.110 Safari/537.36'}​response = requests.get(url, headers=headers)在上面的代码中...但,问题来了,又的HTTP代理提供的节点可选范围很小,或者为了介于成本,提供的节点只在某一些特定的偏远地区,或者干脆可用率极低,使用起来非常不方便,我们要如何在一众厂商中挑选到适合我们的呢?

53830

如何让 Jupyter Notebook 自动导入代码

但是,在开始实际工作之前,我们总是需要为每一个 Notebook 写一堆的导入代码,虽然这不困难,但是却很繁琐,有时还需要查找对应的导入语句例如 from sklearn.preprocessing import...OneHotEncoder, LabelEncoder from sklearn import feature_selection 怎样才能在启动Jupyter 笔记本时自动加载这些代码,让我们只专注于使用这些库...但这个方法也有一个弊端,就是由于文件缺少相关导入代码,因此可能打包发给别人用时会无法执行,我们也不可能再次检查所用的代码然后手动导入一遍,所以只能在自己修改了配置文件的设备上用用。...Notebook后便可以实现自动导入相关库。...可以看到,这个方法和方法一的差别在于,他不是默认导入全部的依赖库(避免了过多的内存占用),而是在你使用到这个库时,自动在Notebook头部添加对应的导入代码,是不是很酷!

1.2K50
领券