写点什么

微软开发主管临别诤言

  • 2007-11-28
  • 本文字数:1264 字

    阅读完需:约 4 分钟

Jay Bazuzi 曾任 C#编辑器的开发主管,现正离开微软。他在离开之前令人惊讶地给旧日伙伴留下了一些尖锐的临别赠言:“OO 不是一时三刻的流行”,“用用别人写的代码也不要紧”。

Jay 一开头就说:

在我离开之前,想要说说我对微软的软件开发的一些想法。

他的帖子火力集中在他认为改进潜力最大的 5 个主题:

  • 最清晰的代码是最好的。
  • OO 不是一时三刻的流行。
  • 用用别人写的代码也不要紧。
  • 用设计来赶走问题。
  • 最重要的:我们可以做得更好。

虽然 Jay 已经掏心掏肺,不过并没有多少人回帖。 Alex Barnett 觉得这些话在微软关起门来说说就好,但除此之外这个帖子倒是没有出现想象中的口水仗。

可悲的事实是,Jay 说的问题并不是微软才有。如果换掉微软的名字,很多公司恐怕都会觉得说的是自己。比如,关于清晰的代码,Jay 写道:

微软的大多数开发者都还没有认识到尽力编写清晰的代码能带来多么巨大的价值。有一次我看见有人提交一段代码,他在一个 600 行的函数里增加了 200 行。这个函数本就有差不多 597 行属于太长了。用“Extract Method”方法把函数分成小块;用“Extract Class”方法来驾驭由于前一步骤而霎时间出现的方法数量大膨胀。别停下,还可以继续改进。

谈到缺乏面向对象的思维时,Jay 举了近年由于安全原因而处理缓冲区溢出的例子。他们写了很多工具来检查,保证当操纵缓冲区时,总是额外传递了一个参数来代表缓冲区的正确长度。Jay 很不满意这种解决方法:

喂,当你发现自己总是将几个数值一同传来传去,为什么不把它们放到一个类里面?先做到这一步就好,多态、继承、封装可以以后再说。

正确处理对象不是易事,重用对象就更难了。微软似乎患上了流传多年的“不是自家发明(Not invented here)”综合症,而且排斥的对象不仅仅是来自微软外部的代码。

目前,Visual Studio 代码库里有大约十来种 C++ String 类的实现,大多数都是从 MFC 硬改出来的。用这些类已经比把缓冲区传来传去强多了,但是,喂……那些编写类库的家伙可是拿工资全职干这个的(难道不比你干得好)?为什么你还不用 STL 或者 ATL? 不光是 C++ 有这样的问题……在.Net Framework 的最初实现中,哈希表的实现我都数不清。同学们!我们还是来点类库吧。

Jay 给全世界的开发者们送上的最大礼物,还是他对如何持续提高的讨论。Jay 说他曾经担任一个非常没经验的团队的经理,而在一年后,比起工作内容相近的其他更富经验的团队,这个团队的工作效率和代码质量都要更高,而且每次都能按计划完成。

Jay 将之归功于团队能够持续地提高自身。他列出了一些有助于找到正确方向的问题;他觉得前同事们应该用这些问题来问自己;实际上不管在哪里工作的开发者们都应该经常问问自己这些问题:

  • “要保证这个问题不会再出现,我该怎么做?”
  • “要想少出些 Bug,我该怎么做?”
  • “要保证 Bug 容易被修复,我该怎么做?”
  • “要保持对变化的快速响应,我该怎么做?”
  • “要保证我的软件的运行速度,我该怎么做?”

如果大多数团队都能不时问一下自己,必定会从中得益,因为这些都是真正强而有力的问题。

查看英文原文: Surprising criticism from parting Microsoft development lead

2007-11-28 18:541218
用户头像

发布了 225 篇内容, 共 63.5 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

蓝易云 - SQLServer如何获取客户端IP

百度搜索:蓝易云

第62期|GPTSecurity周报

云起无垠

监控系统原理揭秘-数据运算篇

京东科技开发者

万界星空科技低代码云mes核心功能详解!建议收藏!

万界星空科技

低代码平台 mes 云mes 万界星空科技 低代码云MES

三大产品板块快速发展,零信任价值备受认可

芯盾时代

iam 零信任 微隔离 sdp

虚拟ECU:纯电动汽车发展下的新选择

DevOps和数字孪生

电动汽车 虚拟ECU

无缝数据整合:京东商品详情API在多平台同步中的应用

代码忍者

API 接口 API 文档 API 测试

基于人工智能的代码分析与 Bug 检测实战

测吧(北京)科技有限公司

测试

蓝易云 - Logstash同步MySQL数据到ElasticSearch

百度搜索:蓝易云

阿里云位居 IDC MarketScape 中国实时湖仓评估领导者类别

阿里云大数据AI技术

大数据 阿里云 IDC 实时湖仓

【YashanDB数据库】大事务回滚导致其他操作无法执行,报错YAS-02016 no free undo blocks

YashanDB

yashandb 崖山数据库 崖山DB

如何建立测试团队的知识库

老张

团队管理 软件测试 质量保障 知识库

如何在 K8s 中实现指定数据库实例下线?

小猿姐

数据库 Kubernetes 容器 云原生

极光大数据:百度文库智能PPT市场份额已达八成,用户增速远超行业水平

Geek_2d6073

人工智能丨ChatGPT 的 API 使用

测试人

软件测试

Databend 开源周报第 156 期

Databend

人工智能|ChatGPT 的 API 使用

测吧(北京)科技有限公司

测试

万界星空科技MES系统与ERP的对接

万界星空科技

系统集成 ERP mes 万界星空科技 系统对接

闪耀STIF2023国际科创节,望繁信科技荣获年度行业创新典范奖

望繁信科技

人工智能 大数据 数字化转型 流程挖掘 流程智能

英伟达新型AI芯片将推迟三个月发布,谷歌微软坐不住了!第二位人类患者植入脑机芯片!马斯克表示一切顺利|AI日报

可信AI进展

人工智能

mac单机游戏推荐:仙剑奇侠传3 for mac(支持M1)

你的猪会飞吗

Mac游戏下载 mac单机游戏

Next-Gen Industrial WiFi Chips Explained

wallyslilly

IPQ8072 ipq9574

【YashanDB知识库】statement级别的触发器在jdbc接口调用executeBatch时被多次触发

YashanDB

yashandb 崖山数据库 崖山DB

适配器模式在 Go 语言中的应用

江湖十年

Go 面试 设计模式 适配器模式 后端、

京东商品详情数据接口(JD.item_get)丨京东API接口指南

tbapi

京东API接口 京东商品详情接口 京东商品详情数据采集 京东商品API 京东商品详情API

白兔与魔法师

蓬蒿

王阳明 成长感悟

Python爬虫实战:利用代理IP爬取百度翻译

袁袁袁袁满

读友好的缓存淘汰算法

百度Geek说

架构 页面缓存 企业号 8 月 PK 榜 淘汰算法 广告检索

LED显示屏行业发展现状与未来展望

Dylan

行业 LED LED display LED显示屏 市场

RUM技术探索:前端监控数据采集与实践

乘云数字DataBuff

前端监控 #RUM

微软开发主管临别诤言_研发效能_Niclas Nilsson_InfoQ精选文章