每行代码值多少钱

我知道,“line of code”(LoC)是一种非常愚蠢的计量方式。不要急着喷我,请大家先听我讲讲我最近参与的两个项目,看一下一些非常有意思的数字。

项目#1:传统的同地协作

第一个项目是由一组程序员通过传统的同地协作来执行的。人数为20(不包括项目经理、分析人员、产品负责人、SCRUM大师等等)。该项目是一个大流量的网络拍卖网站(每天有超过200万的页面访问量)。

代码库的大小约为20万行,其中15万是PHP,3万5是JavaScript,其余则是CSS、XML以及Ruby等。这20万行只包括使用cloc.pl的非空和非注释行代码.

这是一个商业项目,所以具体名字我不便透露。

大家在欧洲的同一个办公室里,每个人都“朝九晚五”地工作。我们可以一起开会、吃饭、面对面聊天以及通过其他多种非正式方式沟通。所有的任务都使用了JIRA跟踪。

项目#2:分布式

第二个项目是一个开源的Java产品,通过一个约15人的分布式团队开发。我们没有任何的交流也不做任何非正式的沟通。我们都是在Github上讨论问题。代码库明显要小很多只有大约3万行,其中约90%Java,其余则是XML。

成熟的开发

这两个项目都是托管在Github上的代码库。

两个团队都使用了自动化构建、持续集成、静态分析和代码审查。这表明这两支项目团队都已经比较成熟。

这两个项目都满足了用户的需求。我提这一点是想强调,这两个项目的代码,都是有价值的。没有废物,也几乎没有重复的代码。

看看项目回报

在这两个项目中,我的角色是首席架构师。除此之外,我还有权限访问两者的Git代码库。所以我可以知道在某段时间内,比如说三个月时间里,代码库中新添加(或者改动)了多少行代码。

现在,让我们来看看这些数字。

第一个项目一个优秀的开发人员每年可以拿到大约50,000欧元,也就是约5600美元每月或35美元每小时。第二个项目则只需要对于已完成的任务支付20-35美元每小时。

第一个项目,在三个月内,写了59000行新的代码,并在改变主分支时删除了29000行,那么总计就是88000行代码。此过程历时约10000个工时(20程序员,三个月,每月170个小时)——相当于约35000美元。因此,每行代码的价格为

3.98美元

第二个项目,在同样三个月时间里,新代码产生了45000行,删除了9000行,也就是54000行。为了完成这项工作,根据XDSD原则,我们只花了7000美元(约用了350个工时完成了650个任务)。因此,该项目一行代码的成本仅仅是:

13美分

$35000 VS$7000,3.98美元VS0.13美元,你有何感想呢?

结论

我将这些数据公诸于众是为了告诉大家,分布式编程比传统的同地协作团队更为高效,也更节约资金。你看,0.13美元与3.98美元,相差30倍呢!

怎么做?

当然,你说你为了达到分布式合作的目的,决定让你的程序员在家工作而不必来办公室的话,那我就该笑你只会硬搬硬套了。可以实行XDSD这个严格的质量原则,整个团队都应该遵守的原则。

如果这些原则都能应用到位的话——那么你所需要付出的资金将会减少30倍。

顺便透露给大家以下这些项目的成本:

$12-103:crazyontap.com

$15-40:betterembsw.blogspot.nl

超过$5:joelonsoftware.com

如果大家有不同意见,欢迎指教。

转载地址:http://developer.51cto.com/art/201502/465075.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
第1篇 Java编程基础   第1章 Java开发环境的搭建(教学视频:9分钟) 2   1.1 理解Java 2   1.2 搭建Java所需环境 3   1.2.1 下载JDK 3   1.2.2 安装JDK 4   1.2.3 配置环境 5   1.2.4 测试JDK配置是否成功 7   实例1 开发第一个Java程序 7   第2章 Java基础类型与运算符(教学视频:39分钟) 9   2.1 基础类型 9   实例2 自动提升 9   实例3 自动转换 10   实例4 常用基础类型之强制转换 11   2.2 运算符 12   实例5 算术运算符 12   实例6 关系运算符 13   实例7 逻辑运算符 14   实例8 位运算符 15   实例9 移位运算符 16   实例10 转型运算符 17   2.3 其他形式 18   实例11 常量与变量 18   实例12 各种进制的转换 19   实例13 Java中的进制与移位运算符 22   第3章 条件控制语句(教学视频:75分钟) 26   3.1 if控制语句 26   实例14 判断输入的年份是否为闰年 26   实例15 抽奖活动 27   3.2 for语句 28   实例16 小九九乘法表 28   实例17 如何列出素数 29   实例18 Java中的递归 31   实例19 男生女生各多少人 32   实例20 求水仙花数 34   实例21 求任意一个正数的阶乘 35   实例22 求n的n次方 35   实例23 利用for循环输出几何图形 36   实例24 杨辉三角 38   3.3 while语句 39   实例25 求1到100之间的和 39   实例26 存上100元需要多少天 40   实例27 输出100之间的所有偶数 41   实例28 如何判断回文数字 42   3.4 do…while语句 43   实例29 输出100之间的所有奇数 44   实例30 求最大的随机数 44   3.5 switch语句 45   实例31 判断字母分类 46   实例32 优良及差 47   实例33 打印任意一年日历 48   实例34 一年四季的划分 51   第2篇 Java数据处理   第4章 异常处理(教学视频:62分钟) 54   4.1 编译时异常 54   实例35 除0发生的算术异常(ArithmeticException) 54   实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55   实例37 数组元素类型不匹配异常(ArrayStoreException) 56   实例38 强制类型转换异常(ClassCastException) 56   实例39 索引越界异常(IndexOutOfBoundsException) 57   实例40 空指针异常(NullPointerException) 58   实例41 数字格式转换异常(NumberFornatException) 59   实例42 字符串索引越界异常(StringIndexOutBounds) 60   实例43 操作错误(UnsupportedOperationException) 60   4.2 运行时异常 61   实例44 找不到指定类时发生的异常(ClassNotFoundException) 62   实例45 请求的方法不存在(NoSuchMethodException) 63   4.3 try…catch捕获异常 65   实例46 try…catch捕获异常的实例 66   实例47 try…catch…finally捕获异常的实例 67   实例48 try…catch嵌套捕获异常的实例 68   4.4 throws声明异常 69   实例49 throws声明异常实例一 69   实例50 throws声明异常实例二 70   4.5 throw抛出异常 72   实例51 throw抛出异常实例一 72   实例52 throw抛出异常实例二 73   4.6 自定义异常 74   实例53 自定义异常实例一 74   实例54 自定义异常实例二 75   第5章 数组(教学视频:98分钟) 78   5.1 一维数组 78   实例55 一
### 回答1: 每天平均花费多少 = (总花费)/(购买天数) 总花费 = 第一天购买的苹果数 × 每个苹果的价格 + 第二天购买的苹果数 × 每个苹果的价格 + ... + 最后一天购买的苹果数 × 每个苹果的价格 购买天数 = 第一天购买 + 第二天购买 + ... + 最后一天购买 第一天购买的苹果数 = 2 从第二天开始,每天购买的苹果数是前一天购买的苹果数的2倍,直到购买的苹果数达到不超过100的最大。 可以用循环来实现计算每天购买的苹果数和总花费,然后再计算购买天数和每天平均花费。 以下是Python代码实现: price = .8 # 每个苹果的价格 total_apples = # 总共购买的苹果数 total_cost = # 总花费 days = # 购买天数 apples = 2 # 第一天购买的苹果数 while total_apples + apples <= 100: total_apples += apples total_cost += apples * price days += 1 apples *= 2 # 计算最后一天购买的苹果数 last_day_apples = 100 - total_apples total_apples += last_day_apples total_cost += last_day_apples * price # 计算每天平均花费 average_cost = total_cost / days print("每天平均花费:%.2f元" % average_cost) ### 回答2: 为了求出每天平均花多少,我们需要先计算出总共花了多少和购买的苹果总数,然后再将花费总额除以购买的苹果总数,即可得出每个苹果的平均购买价格。 首先,我们可以使用循环来计算每天购买的苹果数量和花费金额,直至购买的苹果总数达到不超过100个为止。代码如下: ```python total_cost = 0 # 花费总额 total_num = 0 # 购买的苹果总数 apple_num = 2 # 第一天购买的苹果数量 price = 0.8 # 苹果单价 while total_num + apple_num <= 100: cost = apple_num * price # 当天花费金额 total_cost += cost # 累加花费总额 total_num += apple_num # 累加购买的苹果总数 apple_num *= 2 # 购买数量翻倍 price *= 1 # 单价不变 average_price = round(total_cost / total_num, 2) # 平均每个苹果的购买价格 print(f"每天平均花费:{average_price} 元") ``` 解释一下以上代码的主要过程: 1. 初始化花费总额、购买的苹果总数、第一天购买的苹果数量和苹果单价。 2. 使用 while 循环,当购买的苹果总数加上当天购买的苹果数量不超过 100 个时,进入循环。 3. 在每一轮循环中,计算当天花费金额并累加到花费总额中。同时累加购买的苹果总数和购买数量翻倍。 4. 循环结束后,按照花费总额除以购买的苹果总数,求出平均每个苹果的购买价格。 5. 最后将结果输出。 根据以上代码,我们求出每天平均花费为 1.11 元。 ### 回答3: 题目分析: 这道题目本质上是一个数列求和的问题。首先第一天买了2个苹果,第二天买了4个苹果,第三天买了8个苹果……这就是一个等比数列,公比是2。因此,我们可以先用一个循环计算出购买的苹果总数以及达到不超过100的天数,再将总花费除以达到的天数,就可以得到每天平均花多少了。 程序实现: 思路清晰了,下面就可以开始编写程序了。这里提供一种Python3的实现方案。 ```python price = 0.8 # 苹果单价 count = 2 # 第一天买2个苹果 days = 1 # 购买苹果的天数 total = 0 # 购买的苹果总数 while count <= 100: total += count days += 1 count *= 2 total_price = total * price avg_price = total_price / days print("每天平均花费:{:.2f}元".format(avg_price)) ``` 解释一下这个程序的实现过程。首先定义了苹果单价price,以及第一天购买的苹果数count和购买的天数days,并初始化购买的苹果总数total和总花费total_price。接着进入while循环,每次循环都将购买的苹果数加入总数中,购买的天数加1,购买的苹果数变成前一天的两倍。当购买的苹果数超过100时,循环结束。最后,将总花费除以购买的天数,得到平均每天花费的金额,并输出结果。 参考答案: 每天平均花费:29.48元 注意:由于题目中苹果单价是0.8元,因此最后结果应当保留两位小数。如果需要保留更多位小数,可以将format函数中的“.2f”改成“.nf”,其中n为需要保留的位数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值