即刻成为鸿蒙应用开发者,解锁职业发展新机遇!点击了解~ 了解详情
写点什么

2012.3.30 微博热报:大方法、基础 vs 库

  • 2012-03-30
  • 本文字数:1505 字

    阅读完需:约 5 分钟

关于代码中对方法的定义,有很多规则,其中一条就是要限制一个方法中代码的行数。这条规则也会根据具体使用的语言和项目不同而有所区别。日前, XiaoshenW 的一条微博中提到了“毛少”在西安电子科技大学的讲座,其中说到:在 ThoughtWorks 代码超过 15 行就视为"大方法"。从而引起了大家对“大方法”的定义以及一个方法中应该有多少行代码展开了广泛讨论:

onedear :超过 15 行就属于大方法,那大方法要怎么对待呢?// @老赵: 我问了好多次了,谁能给我一个示例项目看看啊?

真谛 LOL :对对对,易维护是真,我司。。。那个破项目使用 django 已经被修改到惨不忍睹,后来。。我试着分了一下。。现在产品再来小变动,分分钟解决问题啊!

1000copy : 15 行也好,50 行也好,并非本质,本质是设置一个信号,在这个值超过的时候,提醒自己和团队是否有必要处理。一个较大团队,如果简单说要做到“可读”是不易于操作的,而有一个共同认可的行数信号比较实用。可以自动化,可以提醒;我发现超过这个行数的几乎都有调优的空间,并且不小。具体项目的缺乏是一个硬伤,现实工作中,没有人为了这个单一的理念全面贯彻下去而做一个项目,做项目除了代码的可维护性外,还需要考虑很要因素,其中有些比可读性还重要。做了也一样要被质疑。也有一些现实问题,就是公司项目全面成功且实际投入使用行数限定的,拿出来有政策风险。有些人确实是比较无聊。比如行数的概念还是语句的概念;比如行数没有指明列数;你明明知道人家不是这个意思,都是同行,至于搞这些飞机嘛。实话说有点幼稚和耍弄小聪明。

压力很大同志:我一般的底线是一屏,不是竖着那种 // @刘鑫 -MarchLiu : 很难想像一个实用的项目里没有超过 15 行的方法,我给自已的标准是读起来舒服就行,一个逻辑嵌套十几二十层方法,会比写五十行代码更蛋疼。 // @bnu_chenshuo : 标准随便你定,能不能举一两个符合你自己定的标准的项目给大家学习学习?

赖晨东:方法大小不应该以行数来定的。而是以“职责(功能)”来定的。保持【一个方法只干一件事】并保持【同一方法的代码在同一抽象级别上】,方法就长(行数多)不起来。现实中看到的那先几百上千行的方法绝大多都违反了上述两个原则。

高翌翔:不管别人信不信,反正俺是信了!行数多寡靠得是功力,不妨从 25 > 20 > 15 > 10 > 5 依次递减,就像从幼儿园到博士后一样;而细粒度方法是程序设计的追求之一,不仅代码重用性好、更易维护,最重要的是,这是对问题域加深认知的过程,正如科学家不断探究分子、原子、夸克等更小粒子的过程相仿!

关于高手和菜鸟之间的区别,有很多种说法,蛙蛙王子也在微博上说出了自己的想法:我觉得现在高手和菜鸟最大的区别是高手会用的库多,而不是高手底层好,基础硬,当你研究 epoll 时,高手都精通 libevent 了,当你费心思考虑组织 js 代码时,高手都熟练使用 backbone 和 seajs 了,花时间补基础,自己写基础组件,不如学现成库有成效。不过大家也都说出了自己的想法:

宝玉 xp :我一直觉得高手在于擅于用已知知识和学习新知识去快速实现或解决问题,而不在于他会多少知识点。

TKei_ :相当实际有效做法,但还是觉得想要理解得透彻,基础和底层是必须的,当然,如果是要做框架或者库的开发者,底层是相当重要了

蛙蛙王子:回复 @宝玉 xp : 太虚了这种说法,设么都不会也能做到这点,高手的积累还是很多的

aste22 :也不完全。装配脑袋 RednaxelaFX 即便见识不够广,但人家的基本功那可是非同寻常的,他们更是高手

李欢的大猪窝:实际上,公司里需要精通底层的人几个就够了,需要精通框架的人多

袁凯 1860yk :不敢苟同!创造者比使用者有价值

推荐微博: XiaoshenW

简介:能做到精致就不要停留在 good enough 上;精神洁癖;持续改进。

2012-03-30 01:272597
用户头像

发布了 340 篇内容, 共 136.5 次阅读, 收获喜欢 13 次。

关注

评论

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

敏捷团队实践

Teobler

项目管理 敏捷 敏捷开发 工程实践 敏捷开发管理

Elasticsearch 一个 field 两个索引

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

备战金三银四,阿里,腾讯春招面试题解析,含Java岗988道题分享

Java 架构 面试

Selenium 自动化前的补充知识,Frame操作、多窗口切换、模糊定位、复合定位

梦想橡皮擦

Python 28天写作 2月春节不断更

为您收录的操作系统系列 - 线程小常识

鲁米

线程

手把手教你爬取优酷电影信息-1

happlyfox

学习 爬虫 28天写作 2月春节不断更

又长又细,万字长文带你解读Redisson分布式锁的源码

数据库 redis 架构

山东区块链赋能农产品溯源平台解决方案

源中瑞-龙先生

爬虫知识记录之一

头号摄影师

爬虫

1.2 Go语言从入门到精通:编写第一个Go程序

xcbeyond

28天写作 Go 语言

28天瞎写的第二百四十四天:冥想的种类

树上

冥想 28天写作 正念

“定义”

Nydia

关于个人认知的一些碎碎念「Day 6」

道伟

心理学 认知 28天写作

(28DW-S8-Day6)区块链如何解决双重支付及防篡改

mtfelix

比特币 区块链 防篡改 28天写作 双重支付

敏捷技术实践之TDD

Teobler

敏捷 敏捷开发 TDD 极限编程 测试驱动开发

泰康和百度智能云为何相互需要?

吴俊宇

百度 保险数字化 泰康

只有两颗糖,什么时候给——再谈峰终定律

Justin

心理学 28天写作 游戏设计

手把手教你爬取优酷电影信息-2

happlyfox

学习 28天写作 2月春节不断更

水墨屏开发设备,旧 Kindle 改造而成

HelloGitHub

开源 硬件 kindle

【Python】关于 Type Hints 你应该知道这些

zhujun

Python

让听见炮火的人来做决策,做决策的要好好听听炮火

数列科技杨德华

28天写作

前端HTML5面试官和应试者一问一答

我是哪吒

html 程序员 大前端 28天写作 2月春节不断更

我凭借这份“2021全网最全Java面试清单”彻底征服阿里面试官

比伯

Java 编程 程序员 架构 面试

基于SpringBoot实现文件的上传下载

Java鱼仔

springboot

视频号直播和 PageRank 算法 [待完善]

小匚

机器学习

Kafka.08 - 消息交付可靠性保障

insight

kafak 2月春节不断更

敏捷业务实践之计划游戏

Teobler

项目管理 敏捷 敏捷开发 敏捷开发管理

使用 Tye 辅助开发 k8s 应用竟如此简单(六)

newbe36524

Docker Kubernetes 微服务 dotnet

微信小程序开发笔记(一)

陈飞

小程序

首全网发!2021最新版美团面经刷题笔记,已霸榜GitHub

比伯

Java 编程 架构 面试 程序人生

小步发布、验收测试和完整团队

Teobler

项目管理 敏捷 敏捷开发 工程实践 敏捷开发管理

2012.3.30微博热报:大方法、基础 vs 库_方法论_侯伯薇_InfoQ精选文章