热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

程序员开发者应该负责多少代码行数?

当我在越来越多的组织中工作之后,我编译时候遇到的有趣问题也越来越多。严格来说,我也有了很多待办事宜。而此处的有趣并不是讽刺。这种有趣就像是你听见一个醉汉夸夸其谈他的政治观点,然后回答说“哦,那……很有趣”。

当我在越来越多的组织中工作之后,我编译时候遇到的有趣问题也越来越多。严格来说, 我也有了很多待办事宜。而此处的有趣并不是讽刺。这种有趣就像是你听见一个醉汉夸夸其谈他的政治观点,然后回答说“哦,那……很有趣”。

程序员应该负责多少行代码.jpg

把这些问题放在哲学层面上真的让我很感兴趣。它们让我想去了解我从来没有想过的事情。今天我从众多问题中选出一个,然后搞清楚。这个问题是一个客户在不久之前问过我的:“开发者应该对多少代码负责呢?”

为什么要问这个呢? 好吧。是因为他们有一个值得称赞的目标。 他们有一个相当庞大的遗留代码库,并且不想那些在其上工作的人负担过重。 “我们知道我们的代码库有X行代码,所以多少开发人员可以组成一个完美的开发团队?

他们以数据驱动的方式问了一个很好的问题。然而,由于缺乏更仔细的检查,所有理由都不成立。 我今天会说出为什么会如此。下面是一些关于这个想法的问题列表。

集体代码所有权

首先,此处不谈针对集体代码所有权的异议。历史上,应用程序开发的经理出于特殊的目的往往将软件工作和体力劳动做对比。

有一堆需要挖的洞? 分配给每个团队成员一些挖洞的任务。有一堆需要编写的代码? 分配给每个团队成员需要编写的代码段。

当你意识到代码与挖洞是不同的,代码块不是商品的时候,你就要准备好应对麻烦事了。也就是说,你不能拿它们做互换交易。所以当你对代码进行了划分,刚好碰上编写 X 模块的人轻量两个星期假,那你只是把任务搁置,直到那个人回来。

个人代码所有权也会带来其他问题,但往往是对业务影响最大的。有人称之为“公共要素”。但是无论你叫它什么,当你开始谈论团队成员对现有代码的“负责”时,你应该鼓励此类行为。 因团队本应该对代码库负责。 仅此而已。

代码量意味着什么呢? 无所谓?

对于那些年纪比较大的.NET开发者来说, 你可能会把你的编程历史分为"BL"和"AL". 即"Linq前"和"Linq后"。

在 Linq 出现之前, 你写了大量的指令性的代码,,遍历嵌套循环直到找到你想要的对象。而Linq一经问世, 所有这些都变成了声明式的代码。但它不是通过一对一的智能海量映射做到的。它是将你的冗长的就像快要爆炸了的中子星一样的指令性代码,分割成一系列更小的部分。

通过这些,我们知道了代码量在不同的语言、开发者甚至语言的不同版本之间,都会有巨大的差异。因此,"How Much" 作为一个数值指标变得相当不稳定,以至于有很少的可度量的值.

从商业的观点看, 代码就像库存, 它提供了商业可能性, 但是它放在那儿,就是你的负债。你希望开发者用尽可能少的代码完成一个功能。而比较讽刺的是,有些开发者们更趋向于为每一个功能写尽可能多的代码,他们就应该为"最少代码"负全责。毕竟有时候, 多不一定更好。

代码的不确定性

我提出的第三个也是最后一个反对意见是关于代码不确定性的。这里,我指的是给定文件或代码段的更改频率。

要理解代码的不确定性会在哪产生分歧,请考虑两个极端。首先,考虑一个稳定的、被充分考虑的模块,它包含了一百万行代码。每隔34年,就会出现一些新的政府监管规定,需要对这里或那里进行一些细微的调整,但除此之外,它如产品链上的梦幻一般运行良好。

另一方面,考虑一个10,000行应用程序。但是这个应用程序有各种各样的运行时问题。这里,为了更说明问题,假定持股人在不断改变着他们对软件行为的想法,导致大量粗制滥造。

对于这两个代码库,您完全可能将100万行的代码库交予1个开发人员维护,而你需要一整个团队来为第二个代码库工作也是完全可能的。尽管后者的代码库的大小是前者的1%,这依旧是有理可据的。

我提供这个例子来说明一个重要的观点。光用代码的行数来作为维护的依据是欠妥的。因此,仅仅使用代码行数来评估维护计划会成为悲伤的故事。

根据代码库对团队进行评估

那么,你如何根据代码库来划分一个团队大小?如果不可行,那么开发人员应该负责多少代码,或者说“开发人员应该承担多少责任?”

我将给出一个既简单又难以衡量的方案:开发人员应该承担多大的责任?基于这点考虑,可以让代码变得更加规范。

在敏捷(Agile)开发的世界里,这一思路产生了故事地图(story mapping)和计划活动(planning activities)。将软件的目标划分为待办事项列表中的特性,然后让团队对这些特性进行分析处理。如果团队在业务上进展过慢,则表示你的团队需要壮大。如果人们无所事事,说明你的团队人员冗余。

在自顶向下计划/瀑布模型的世界中,会呈现出一种类似的动态现象,而你所能做的就只是算算会在什么时候先于计划完成(哈,就是这样)或是开始落后于计划。先于计划,那就是团队人数太多了,落后于计划,就是人数还不够。

诚然,你得通过计算和观察软件所实现的功能是否能跟上业务需求的演进步伐,才能估量出开发人员所要承担的责任范围。


推荐阅读
  • Matplotlib,带有已保 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文描述了作者第一次参加比赛的经历和感受。作者是小学六年级时参加比赛的唯一选手,感到有些紧张。在比赛期间,作者与学长学姐一起用餐,在比赛题目中遇到了一些困难,但最终成功解决。作者还尝试了一款游戏,在回程的路上感到晕车。最终,作者以110分的成绩取得了省一会的资格,并坚定了继续学习的决心。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 关羽败走麦城时路过马超封地 马超为何没有出手救人
    对当年关羽败走麦城,恰好路过马超的封地,为啥马超不救他?很感兴趣的小伙伴们,趣历史小编带来详细的文章供大家参考。说到英雄好汉,便要提到一本名著了,没错,那就是《三国演义》。书中虽 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 橱窗设计的表现手法及其应用
    本文介绍了橱窗设计的表现手法,包括直接展示、寓意与联想、夸张与幽默等。通过对商品的折、拉、叠、挂、堆等陈列技巧,橱窗设计能够充分展现商品的形态、质地、色彩、样式等特性。同时,寓意与联想可以通过象形形式或抽象几何道具来唤起消费者的联想与共鸣,创造出强烈的时代气息和视觉空间。合理的夸张和贴切的幽默能够明显夸大商品的美的因素,给人以新颖奇特的心理感受,引起人们的笑声和思考。通过这些表现手法,橱窗设计能够有效地传达商品的个性内涵,吸引消费者的注意力。 ... [详细]
author-avatar
阿日小子很顽强_756
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有