作者Philethan (Ethan)
看板Python
标题[问题] 如何将 code 写得很美丽通顺且直观?
时间Mon Apr 22 22:57:08 2019
大家好,小弟是经常需要用到 python 做各种数值积分的硕二生。
过去一年来,平均每周大概花个十几小时在写程式,但日子一久,
我并不见得会记得当时我的「逻辑」是什麽。即便自己加了注解,
我也不见得看得懂,更别说其实自己也不是很有耐心在写注解...。
虽然小弟没特别学过什麽程式,只修过理工学院的 Matlab、fortran、
C++,然後去年才开始用 Python,只知道常见的基本功能而已,但
确实会想把 code 写好,所以才想上来问问各位大神,不知道各位
写程式有没有什麽技巧或心法之类的?
小弟通常都是用程式读取 *.csv,将多组 (x,y) 座标数据进行积分、
微分、叠合平均,去除不想做曲线拟合的数据,将数据平移,储存
csv、换单位 ...。这些动作,日子一久,回过头来看就会忘记 = ="
例如:
https://paste.ofcode.org/38jmDgr9m66wJiYEMdpZvfu
有时也会一直犹豫要不要将一些动作写为 function。一开始觉得不要,
但重复第二次时才发现天啊,早知道就写成 function。但写 function
有时又会比较复杂,要输入的参数、数据太多,似乎也不适合写成函数。
不过我常用的函数都会写在一个外部档案中,需要时就 import 进来用。
或许这种事情就只能靠自己耐烦,慢慢整理吗?.....
不好意思,或许有点不知所云 <(__)> 谢谢大大们的阅读。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.192.0.245
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1555945031.A.F40.html
※ 编辑: Philethan (123.192.0.245), 04/22/2019 22:58:15
1F:推 vi000246: 关键字 clean code、重构 04/22 23:04
2F:推 iphone2003: 提个不相关的,其实没必要写reverselist这个函数,直 04/22 23:19
3F:→ iphone2003: 接my_list[::-1]就可以得到reverse了 04/22 23:19
4F:推 TitanEric: 多看多写就慢慢学会 04/22 23:28
5F:→ jiyu520: 其实code很难一次到简洁或是不重复 04/23 00:00
6F:→ jiyu520: 当发现自己一直在重复写类似的code,就是抽出的好时机了 04/23 00:01
7F:→ jiyu520: 命名、架构、回圈层数、路径规划、单一职责、开放封闭 04/23 00:03
8F:→ jiyu520: 让程式码具有「良好可读性、可维护性」 04/23 00:05
9F:→ jiyu520: 到「效率性、健全性」,都是重购的好处 04/23 00:06
10F:→ jiyu520: 推荐 易读程式之美学、无暇的程式码 04/23 00:08
11F:推 jiyu520: 对重要代码写测试、设计模式的使用也都有帮助 04/23 00:23
12F:推 jiyu520: 函数可能是纯工具(职责较单纯)、或是脚本式(呼叫各函数 04/23 00:28
13F:→ jiyu520: 你提到 数据太多-> 要处理步骤可能也多 -> 抽步骤成func 04/23 00:29
14F:→ jiyu520: 这样把函式切为 主脚本函式-> 吃参数、call各函式、结果 04/23 00:31
15F:→ jiyu520: 各步骤函式 -> 资料读、清、运、储 04/23 00:32
17F:→ flarehunter: Google python style guide 04/23 08:19
18F:→ feeya: 自己建一个library 例如ez.func1 ez.func2 04/23 13:05
19F:→ feeya: 把你自己写个function整理在里面 04/23 13:05
20F:→ f496328mm: 适当的重构 另外开始学会用物件 04/23 13:46
21F:→ f496328mm: 例如某件事,你要用到很多func,就用class包起来 04/23 13:47
22F:→ f496328mm: class 中加入 main,这样你就不会有 func 太多问题 04/23 13:47
23F:→ f496328mm: class还有一个好处,你参数、data不用传来传去 04/23 13:48
24F:→ f496328mm: 另外物件可以减少很多code 04/23 13:51
哇 感谢大家的留言帮忙,受益良多。
小弟有查查 clean code 与重构,有看到非常多想法 :)
另外我也不太会用 class,之後会来试试看用 class!也很感谢 jiyu520 大大的
很多建议,接下来光是消化大家给的建议就可以提升超多实力了,感谢!
※ 编辑: Philethan (140.112.4.206), 04/23/2019 15:23:02
25F:推 numpy: 很多编辑器都有pylint可以装,可以让你知道那些地方可以写 04/24 18:56
26F:→ numpy: 更好 04/24 18:56
27F:→ numpy: *哪 04/24 18:57