各种流行的编程风格

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?

散弹枪编程

这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。

如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结地,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。

撞大运编程

这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质和实际,但是可以让程序工作起来。他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。一旦出现问题,他们会用两条路:1)停下来,理解一下程序,找到出错的原因。2)使用散弹枪编程方式开始解决问题。

测试驱动开发(Test Driven Development)是一种可以用来拯救上百万的撞大运编程的程序员。于是,他们有了一个更为NB的借口:只要我的程序通过测试了,你还有什么话好说?别骂我,测试驱动开发是一个不错的事物,其主要是用来控制撞大运开发所带来的问题。

Cargo-Cult 编程

关于Cargo Cults 这个词儿来自二战期间的某些太平洋上小岛里的土著人。在战争期间,美国利用这些小岛作为太平洋战场上的补给站。他们在这些小岛上修建自己的飞机跑道以用来运输战争物资。而那些小岛上的土著人从来没有见过飞机,当他们看到飞机的时候,觉得相当的牛,可以为那些白人带来各种各样的物品和食物。当二战结束后,那些土著人仿照着修建了飞机跑道,并用竹子修建了塔台。然后就在那期望着有飞机为他们送来物品和食物。

Cargo Cult 编程是一种非常流行的编程方法,使用这种方法的程序员会学习其它编程高手的编程方法,虽然他们并不知道为什么高手们要那样做,但是他们觉得那样做可以让程序工作起来。举个例子,当时有大量的程序员在J2EE出现的第一年中过度地使用了EJBs和Entity Beans。

刻舟求剑编程

刻舟求剑是一个很流行的寓言了。这种风格的编程在程序员的圈子里是非常常见的。比如,有一天,你发现了一个空指会的异常,于是你到了产生空指针异常的地方,简单地放上一个判断: if (p != NULL)。

是的,这样的fix可以让你的程序工作起来,但你并没有真正地解决问题。你只不过是在你的船边记下了剑掉下去的位置,这样做只不过把问题隐藏起来,最终只会让你的程序的行为变得神出鬼没。你应该找到为什么指针会为空的原因,然后再解决这个问题。

设计模式驱动型编程

正如这种编程的名字所说的,这种编程风格使用大量的设计模式,在你的程序中,四处都是设计模式,你的代码到处都是Facade,Observer ,Strategy,Adapter,等等等等。于是,你的程序要处理的业务逻辑被这些设计模式打乱得无法阅读,最后,也不知道是业务需求重来,还是设计模式重要,总之,实际业务需求的程序逻辑被各种设计模式混乱得不堪入目。

侦探型编程

在解决一个Bug的时候,侦探型程序员会调查这个Bug的原因。然后,则调查引发这个BUG的原因的原因。再然后,其会分析修正代码后是否会导致其它代码失败的因果关系。再然后然后,他会使用文本搜索查找所有使用这个改动的代码,并继续查找更上一级的调用代码。最后,这个程序员会写下30个不同的情形的测试案例,就算这些测试案例和那个Bug没有什么关系,最最后,这个程序员有了足够多的信心,并且精确地修正了一个拼写错误。

与此同时,其它一个正常的程序修正了其它5个Bug。

屠宰式编程

使用这种风格的程序员,对重构代码有着一种难以控制的极端冲动。他们几乎会重构所有经手的代码。就算是在产品在Release的前夜,当他在修正几个拼写错误的bug同时,其会修改10个类,以及重构与这10个类有联系的另20个类,并且修改了代码的build脚本,以及5个部署描述符。

转载于:https://my.oschina.net/jack230230/blog/83241

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有标题,配得上这款“俄罗斯方块”

在之前的文章时,马斯提到数学存在一种现象叫“梯次掉队”,原因在于孩子的数学思维地基没有打牢。(传送门)提到初中孩子需要空间想象能力时,很多父母疑惑为何需要?关于这点,小木给大家说明下&…

linux仿真速度快吗,Linux上安装使用最快的GPU加速的终端仿真器Alacritty

这个简单的教程展示了如何通过PPA在Ubuntu 20.04, Ubuntu 20.10, Linux Mint 20中安装最快的终端模拟器Alacritty。Alacritty是一个跨平台、GPU加速的终端模拟器,是现有最快的终端模拟器。可以在macOS、Linux、BSD和Windows上工作。它是一款专注于简单性和性能的免费…

使用c#接入华为云-内容审核

背景内容审核(Content Moderation),是基于图像、文本、音视频的检测技术,可自动检测涉黄、涉政涉暴、涉政敏感人物、图文违规等内容,对用户上传的图片、文字、音视频进行内容审核,以满足上传要求&#xff0…

16个让你烧脑让你晕的悖论

全世界只有3.14 % 的人关注了数据与算法之美【1】我知我无知苏格拉底有句名言:“我只知道一件事,那就是我一无所知。”这个说法本身就是悖论,展现了自我参照的表述(self-referential statement)的复杂性。而这也是西方…

【Paddle 经验分享】利用PaddleHub 2.x 完成文本分类训练的坑

CSDN原文链接:https://blog.csdn.net/kinfey/article/details/117254781基于项目选择了PaddlePaddle 作为文本分类的基础,经过一周多的使用终于有所进展,把文本分类的相关工作做了一个简单模型。首先说说PaddlePaddle , 现在做深度学习&#…

Python的这几个常用库,你会用吗?

目前,人工智能的应用日渐广泛。而作为人工智能核心的机器学习,是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说&a…

记一次 .NET 某电商交易平台Web站 CPU爆高分析

一:背景 1. 讲故事已经连续写了几篇关于内存暴涨的真实案例,有点麻木了,这篇换个口味,分享一个 CPU爆高 的案例,前段时间有位朋友在 wx 上找到我,说他的一个老项目经常收到 CPU > 90% 的告警信息&#x…

c语言输入n个数按大小输出,输入n个整数并输出,用c语言表达

FOSS//这个是用静态数组储存整数#includeint main(void){int a[100],i0,j;//如果n小于100的话就不需要用动态数组,或者你可以把100改成更大的数,比如100000000......printf("请输入你要输入的数字,以ctrlz结束:");while(scanf(&quo…

ML.NET Cookbook:(5)如何查看中间过程数据?

通常,当我们构建实验时,我们希望确保“到某一时刻”的数据处理产生我们想要的结果。对于ML.NET来说,这不是很容易做到的:因为所有的ML.NET操作都是延迟执行的,所以我们构造的对象只是数据的“承诺”。我们需要创建游标…

在线交友背后的数学原理

全世界只有3.14 % 的人关注了数据与算法之美欣赏 TED-Ed 带字幕视频, 或者看下面编写的文字版. 01交友网站的背后是算法帝国大家好,我叫 Christian Rudder,我是 OKCupid 网站的创办人之一。这个网站现在已经是全美最大的交友网站。就象这网站上大多数其他人一样,我…

你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序

创建项目 在Visual Studio中创建一个应用程序,应首先创建一个项和一个解决方案。在此示例中,您将创建Windows presentation foundation应用程序。 创建 WPF 项目 在菜单栏上,依次选择 *** 文件 ***,新建,项目。 选择V…

超级智能玩具《小小机器人》|全新50种玩法,创造力之源

致砖《小小机器人》全新套装电动机械的完美结合先来看看视频过过眼瘾吧来自美国STEAM教育让孩子跨学科学知识积木向来是STEAM教育很重要的一部分,因为它涉及到了多种学科:要搭建得稳固——这是工程学;要精准搭建——这是数学;要外…

强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步

在马斯的学生时代的记忆中,数学定义定理、化学方程式、物理公式……这些科学知识点总是冷冰冰的,枯燥、深奥也总是科学的代名词。如今教育局明确规定科学课是小学必修课,孩子也逐步接受科学知识的熏陶。但科学课上冷冰冰的,枯燥、…

技术分享|手机推送原理剖析指南

源宝导读:本文旨在对手机推送原理进行剖析和阐述,对业务开发做一些方向性的解惑。一、手机推送的基本概念 ——什么是手机推送?百度词条:手机推送服务是指服务器 定向将信息实时送达手机的服务词条中有2组概念:第一组是…

闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟卷及答案.doc

闽高校计算机二级C语言模拟卷及答案.doc (54页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分一、单项选择题(每小题2分,共20分)1.以下4组用户定义标识符中&#xf…

重磅!中国最赚钱的公司,要上市了!

全世界只有3.14 % 的人关注了数据与算法之美12月31日,中国烟草子公司中烟国际(香港)神秘地向香港交易所递交了IPO的材料,赶上了2018年的末班车。嫡子上市,中国烟草自己向众人掀起了裙裾一角。过去三年,中烟…

浅谈VS2012单元测试

1、先建一个工程此工程带有待测试的方法 2、在解决方案中建立单元测试 3、在测试项目中添加测试项目的引用 4、写测试用例 namespace UnitTestProject1 {[TestClass]public class UnitTest1{[TestMethod]public void TestMethod1(){var restClient (IRestClient)new JsonServi…

我写代码时的小倔强

分享自己写代码时的好习惯,让你的编程能力突飞猛进!大家好,我是鱼皮,上回说到,很多同学在学编程时不注重代码质量,养成坏习惯的同时,失去了提升自己编程能力的机会。还没读上篇文章的同学&#…

10个舍不得删的高质量公号

全世界有3.14 % 的人已经关注了数据与算法之美在信息爆炸的时代快节奏的生活里 你是否曾有一瞬间觉得忙碌而空虚?以下10个优质公众号能让你在闲暇的时候不断的提升自我,拓宽视野愿以书卷气,行我路千里历史学资讯ID:tongbanlishi▲…

ML.NET Cookbook:(7)如何训练回归模型?

通常,为了在ML.NET中训练任何模型,您将经历三个步骤:弄清楚训练数据如何以IDataView形式进入ML.NET。将“学习管道”构建为一系列基本的“运算符”(估计器)。在管道上调用Fit以获得经过训练的模型。示例文件[1]:featur…