【译】13简单的优秀编码规则(从我15年的经验)

原文地址:https://hackernoon.com/few-simple-rules-for-good-coding-my-15-years-experience-96cb29d4acd9#.ddzpjb80c 嗨,我的工作作为一个程序员超过15年,并使用许多不同的语言,范例,框架和其他狗屎。我想和大家分享我写好代码的规则。 1. 优化VS可读性 去他妈的优化 始终编写易于阅读且对开发人员可理解的代码。因为在硬可读代码上花费的时间和资源将远远高于从优化中获得的。如果你需要进行优化,那么使它像DI的独立模块,具有100%的测试覆盖率,并且不会被触及至少一年。 2. 架构第一 我看到很多人说“我们需要快速做事,我们没有时间做架构”。其中约99%的人因为这样的想法而遇到了大问题。编写代码而不考虑其架构是没有用的,就像没有实现它们的计划一样,梦想你的愿望。在编写代码的第一行之前,你应该明白它将要做什么,它将如何使用,模块,服务如何相互工作,它将有什么结构,如何进行测试和调试,以及如何更新。 3. 测试覆盖率 测试是好事,但他们并不总是负担得起,对项目有意义。 当你需要测试: 当你编写模块时,微服务将不会被触及至少一个月。 当你编写开源代码。 当你编写涉及金融渠道的核心代码或代码。 当您有代码更新的同时更新测试的资源。 当你不需要测试时: 当你是一个创业。 当你有小团队和代码更改是快速。 当你编写的脚本,可以简单地通过他们的输出手动测试。 记住,带有严格测试的代码可能比没有测试的代码更有害。 4. 保持简单,极度简单 不要编写复杂的代码。更多更简单,那么更少的错误它可能有和更少的时间来调试它们。代码应该做的只是它需要没有非常多的抽象和其他OOP shit(尤其是涉及java开发人员)+ 20%的东西可能需要在将来以简单的方式更新它。 5. 注释 出现注释说明你的代码不够好。好的代码应该是可以理解的,没有一行注释。但是如何为新开发人员节省时间? - 编写简单的内联文档描述什么和如何方法工作。这将节省很多时间来理解,甚至更多 - 它将给人们更多的机会来提出更好的实施这种方法。并且它将是全球代码文档的良好开端。 6. 硬耦合VS较小耦合 始终尝试使用微服务架构。单片软件可以比微服务软件运行得更快,但只能在一个服务器的上下文中运行。微服务使您可以不仅在许多服务器上,而且有时甚至在一台机器上(我的意思是过程分发)高效地分发您的软件。 7. 代码审查 代码审查可以是好的,也以是坏的。您可以组织代码审查,只有当您有开发人员了解95%的代码,谁可以监控所有更新,而不浪费很多时间。在其他情况下,这将是只是耗时,每个人都会讨厌这个。 在这部分有很多问题,所以更深入地描述这一点。 许多人认为代码审查是一个很好的方式教新手,或者工作在不同部分的代码的队友。但是代码审查的主要目标是保持代码质量,而不是教学。让我们想象你的团队制作代码用于控制核反应堆或太空火箭发动机的冷却系统。你在非常硬的逻辑中犯了巨大的错误,然后你给这个代码审查新的家伙。你怎么认为会发生意外的风险? - 我的练习率超过70%。 良好的团队是每个人都有自己的角色,负责确切的工作。如果有人想要理解另一段代码,那么他去一个负责任去问他。你不可能知道一切,更好的优秀的理解小块代码而不是理解所有。 8. 重构没啥用 在我的职业生涯中,我听到很多次“不要担心,我们以后会重构它”。在未来,这会导致大的技术债务或从头开始删除所有的代码和写作。 所以,不要得到一个债务,除非你有钱从头开发你的软件几次。 9. 当你累了或在一个坏的心情不要写代码。 当开发人员厌倦时,他们正在制造2到5倍或者更多的bug。所以工作更多是非常糟糕的做法。这就是为什么越来越多的国家思考6小时工作日,其中一些已经有了。精神工作不同于使用你的二头肌。 10. 不要一次写全部 - 使开发迭代 在编写代码分析和预测之前,您的客户/客户真正需要什么,然后选择您可以在短期内以高质量开发的MVF(最有价值的功能)。使用这样的迭代来部署质量更新,而不是腰部时间和资源对不合理的愿望和牺牲与质量。 11. 自动化VS手动 自动化是长期的100%成功。所以如果你有资源自动化的东西,现在应该做。你可能认为“只需要5分钟,为什么我应该自动化?但让我计算这个。例如,它是5个开发人员的日常任务。 5分钟_ 5天_ 21天* 12个月= 6 300分钟= 105小时= 13.125天〜5250 $。如果你有40 000名员工,这将需要多少费用?...

2019-10-15 21:54:25 · 1 min · Eddie Wang

gitbash生存指南 之 git常用命令与oh-my-zsh常用缩写

如果命令行可以解决的问题,就绝对不要用GUI工具。快点试用Git bash吧, 别再用TortoiseGit了。 1. 必会8个命令 下面的操作都是经常使用的,有些只需要做一次,有些是经常操作的 git命令虽然多,但是经常使用的不超过8个。 命令 执行次数 说明 git clone http://sdfjslf.git 每个项目只需要执行一次 //克隆一个项目 git fetch origin round-2 每个分支只需要执行一次 //round-2分支在本地不存在,首先要创建一个分支 git checkout round-2 多次 // 切换到round-2分支 git branch --set-upstream-to=origin/round-2 每个分支只需要执行一次 // 将本地round-2分支关联远程round-2分支 git add -A 每次增加文件都要执行 // 在round-2下创建了一个文件, 使用-A可以添加所有文件到暂存区 git commit -am "我增加了一个文件" 每次提交都要执行 // commit git push 每次推送都要执行 //最好是在push之前,使用git pull拉去远程代码到本地,否则有可能被拒绝 git pull 每次拉去都要执行 拉去远程分支代码到本地并合并到当前分支 2. 常用的git命令 假设你在master分支上 // 将本地修改后的文件推送到本地仓库 git commit -am '修改了一个问题' // 将本地仓库推送到远程仓库 git push 2.1. 状态管理 2....

2019-10-15 21:48:37 · 2 min · Eddie Wang

免费服务的盈利模式

免费产品的盈利模式有四种 投放广告 增值服务:先把羊养肥,再慢慢割羊毛,现在大部分都是互联网服务都是这种 交叉补贴: A服务免费,再用户使用A服务时,通过提供B服务来盈利 零边际成本:免费提供A服务,但是用户需要用物品去交换A服务,服务提供者通过加工物品来盈利

2019-10-15 21:46:04 · 1 min · Eddie Wang

thinkpad 系列恢复F1-F12原始功能,切换ctrl和fn的位置

1. 实验准备 T450笔记本 2. 进入BIOS 重启电脑 一直不停按enter 按F1 选择Keyboard/mouse 3. 恢复F1-F2恢复原始功能: fn and ctrl key swap [enabled] 4. 切换ctrl和ctrl的位置: F1-F12 as primary function [enabled] 5. 保存,退出

2019-10-15 21:45:31 · 1 min · Eddie Wang

windows上免费的文本对比工具

https://winmerge.org/?lang=en WinMerge-2.16.4-Setup.exe.zip

2019-10-15 11:24:13 · 1 min · Eddie Wang

手工安装git最新版

Step 1: Install Required PackagesFirstly we need to make sure that we have installed required packages on your system. Use following command to install required packages before compiling Git source. # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum install gcc perl-ExtUtils-MakeMaker Step 2: Uninstall old Git RPMNow remove any prior installation of Git through RPM file or Yum package manager. If your older version is also compiled through source, then skip this step....

2019-10-12 11:25:20 · 1 min · Eddie Wang

如何面对未知的项目

有些项目,文档写的不是很清楚,很多地方都需要摸着石头过河,在此写下自己的一点心得体会。 后悔药 哪怕是改动一行代码,也要创建一个新的分支。如果发现前方有无法绕行的故障,你将会庆幸自己给自己留下退路。 不要把自己逼到死角,永远给自己留下一个B计划。 小碎步 不要大段重构,要小步慢走。尽量减少发生问题的点。在一本书中找错别字很难,但是在一行文字中找错别字就非常容易了。 勿猜测 当你不知道某个函数如何使用时,不要去猜测,而应该去看官方文档是如何讲解这个函数的。

2019-10-11 19:20:26 · 1 min · Eddie Wang

一个人喝粥太淡

一个人喝粥太淡,两个人电话粥太甜。回忆似水流年,翘首如花美眷。对着微信聊天,凌晨了也没有觉得晚。窗外的月亮很圆,就像你那双明亮的眼。说一声晚安,道一声再见,我的梦中是有你的春天。

2019-10-11 19:18:21 · 1 min · Eddie Wang

你有邮箱吗?

你有邮箱吗?如果你有的话,那么当我不在你身边的时候,我会每天给你写一封信,告诉你,我今天遇见的的人,告诉你,我身边发生的事,告诉你,当你不在我身边时,我有多想你

2019-10-11 19:15:13 · 1 min · Eddie Wang

MySql表复制 与 调整字段

表复制 # 不跨数据库 insert into subscriber_copy(id, username) select id, username from subscriber # 跨数据库 需要在表名前加上数据库名 insert into wdd.test(id, username) select id, username from opensips.subscriber 调整表结构 增加字段 ALTER TABLE test ADD `username` char(64) not null default ''

2019-10-10 21:30:20 · 1 min · Eddie Wang