过度追求代码短小优雅有什么害处?
本人目前是尚是一枚acmer,方向web开发, 同时python,php,golang,js等语言都有所涉猎.
由于接触python较早.深受python拿来主义的影响.平时写过很多小项目,但几乎每个项目都引用了很多开源项目,而且代码长度都极其的短.
如最近的一个某某管理系统.整个前台只有一个静态页面,数据全部使用json格式传输,用angularJs渲染界面.主体angularJS+Bootstrap+jQuery然后还有几个Bootstrap和jQuery小插件.服务端是php+mysql+Memcache,同时设计服务端时甚至想过升级nosql数据库和使用golang替换php.这样的阵容估计比某些大型企业的管理系统还大.自己都觉得有点小题大做.
然后完成整个前台增删查改,统计了一下自己的代码发现代码量还不到1000行(除去引用的库代码).估计全部完成撑死1500行.
别人一个页面模板代码就1000行..经常听到某某学长一个星期开发出某某网站,然后上万行代码.那个惭愧
然后自己写的一些数据抓取的脚本什么的.代码量也小得可怕,撑死200行.但是却引用了一大堆不知名的开源项目.而且像下面这样的代码到处都是
1 |
|
回复内容:
其实嘛,在微软,如果有一个人用了牛逼的算法,或者什么奇技淫巧,反正很高大上的把一个东西搞了出来,但是别人看不懂,这个时候我们会被要求开讲座和写教程,来教会同事们,不然方案很可能就会被否决。所以说只要这个代码的作者也可以时刻做到这样的话,害处大概不大吧。
凡事都讲个“度”,你自己都说“过度”了。
最大的坏处就是可读性差了吧。
ps:最后那个例子我倒觉得还好,不算很过分,还不至于影响别人理解。
问题中多处提到"过度", 提问者恐怕心中大概都有自己的答案了.追求代码短小, 可以通过不同的方法, 只要是选择能提高可读性的方法, 其实未尝不可. 例如题目中的代码, 其实还没做到短小优雅, 这样做可以更短小易读(这行还不到80个字符), 通常是更推荐的做法.
1 |
|
while (i >= x || j >= x) { x = (i % x == 0 && j % x == 0) ? (y = x) + 1 : x + 1; } 曾经写着玩儿的一个求最大公约数的方法,现在连我自个儿都看不明白了,可见代码的易读性是多么的重要!
——成心文的微博|新浪微博

从我的经验来看,可能有以下几点需要注意的:
1、公司的法务部门是否允许使用这些开源库
开源协议那么多,也许某个库的协议会造成公司产品的法律纠纷,这种事情应该尽量避免
2、快乐的使用各种第三方库的时候,也请注意优化问题
除了性能优化之后,还有一些奇怪的问题需要优化。
前两天看豌豆荚的一个视频 “豌豆荚:成长的烦恼”,里面提到随着代码的膨胀,遇到了一个dex的函数上限65536的瓶颈,不得不反复合并函数。
其中提到对第三方库的选择时,要注意不要为了使用一个功能,却引入不必要的包袱。
Python我不熟,不确定会不会也有类似的坑,仅供参考吧。
3、最后一点,却是最重要的一点,越精简的代码,越要有充分的注释
一行糅杂了多个库函数的NB代码,当时写出来可能爽的一笔,心中暗骂自己真TMD的是天才。
过两天再看发现完全搞不懂当初为啥这么干了。
这种事儿我干过,不止一次。
比方说长长的正则表达式,注释里面写上匹配目标的范例,绝对没错。
在你需要更换平台时,很可能需要改写正则表达式的写法,参考范例放在那儿,写单元测试也好搞。
但是有一次我忘了……
所以,充分的注释是必要的,不仅为别人,更为自己。 对于Python
建议看看PEP 8 -- Style Guide for Python Code
我初学的时候也喜欢用各种「trick」来让代码看起来「碉堡了」
但是其实易读性太差了, 其他人看的时候都会一边看一边骂... 某牛人说过:“代码先是给人看的,再是给机器执行的”。
某古人说过:“物无美恶,物极必反”。
所以追求是好事,但过分追求,不免带到极端。
人生苦短,追求什么得想清楚。:) 大型项目开发时可维护性和可扩展性很重要..短小有时候可能会和可扩展性有矛盾。过度引用, 尤其不知名的开源项目可能会和可维护性有矛盾...优雅嘛...如何定义优雅...?
P.s.: Go + AngularJs是很正常的搭配...没有特别觉得这是一个overkill.... 短小的代码主要看一个问题:对后续程序员的理解是否增加了难度。
如果理解容易的话,这没有问题。
如果不容易理解的话,那尽量还是写多一点代码,方便容易理解为主。
实际的开发工程中,代码往往是会经过多个程序员的手,容易理解很重要,过度追求代码短小是不提倡的。
这个度的把握要靠经验的,根据不同项目不同团队而不同。
上面的代码有一个小问题: 你用了变量i, 如果用line可能更好理解。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











다중 프로세스 로그 쓰기에서 동시성 보안 문제를 효율적으로 처리합니다. 여러 프로세스는 동시에 동일한 로그 파일을 작성합니다. 동시성을 안전하고 효율적으로 보장하는 방법은 무엇입니까? 이것은 ...

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

작은 XML 파일의 경우 주석 내용을 텍스트 편집기로 직접 교체 할 수 있습니다. 큰 파일의 경우 XML 파서를 사용하여 효율성과 정확성을 보장하기 위해 수정하는 것이 좋습니다. XML 주석을 삭제할 때주의를 기울이면 주석을 유지하면 일반적으로 코드 이해 및 유지 관리에 도움이됩니다. 고급 팁은 XML 파서를 사용하여 댓글을 수정하기위한 파이썬 샘플 코드를 제공하지만 사용 된 XML 라이브러리에 따라 특정 구현을 조정해야합니다. XML 파일을 수정할 때 인코딩 문제에주의하십시오. UTF-8 인코딩을 사용하고 인코딩 형식을 지정하는 것이 좋습니다.

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다.

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

protobuf에서 문자열 상수 열거를 정의하는 문제 protobuf를 사용할 때 종종 열거 유형을 문자열 상수와 연관시켜야하는 상황이 발생합니다 ...

XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오.
