楼主:
qrtt1 (有些事,有时候。。。)
2018-04-28 19:00:20※ 引述《alan23273850 (God of Computer Science)》之铭言:
: 各位板友午安,本鲁软件板首次发文请小力鞭
: 是说最近常和同学讨论到整理 code snippet 的重要,也就是功能导向的笔记
: 举例来说,要测量程式执行的时间,
: 以 C 语言来说,可以是:
: clock_t start = clock();
: ... // code execution
: clock_t end = clock();
: printf("%f\n", (float)(end - start) / CLOCKS_PER_SEC);
: 但如果是以 python 而言,则是:
: import datetime
: before = datetime.datetime.now()
: ... // code execution
: after = datetime.datetime.now()
: print after - before
: 那么各位工程师不觉得针对不同的功能,把所有语言的 code 整理在一起,
: 未来撰写程式在翻阅或查阅的时候就更方便,不需要再敲 Google 关键字了呢?
: 台大资讯系刘邦锋教授也有写过 "由词组学习 C 程式设计" 一书,
: 虽然我没读过,不过我猜应该就类似书中那种以功能为导向整理过的感觉。
: 有没有什么好用的工具或方法能有条不紊地整理这些 code 呢?
乱入一下,python 其实用 decorator 比较方便,也有人有提供 library
def stopwatch(func):
def with_logging(*args, **kwargs):
start_time = time.time()
try:
return func(*args, **kwargs)
finally:
end_time = time.time()
logger.info("{:36s} :: {:.3f}".format( \
func.__name__, end_time - start_time))
pass
return with_logging
@stopwatch
def my_function():
# do something
pass
==========================================================
至于 cheat sheet 的部分,最好是能被‘执行’的程式码。
因为单纯眼睛看可能不太明白,可是跑一次就懂了。
不过,当你在‘工作’的场域时,这些常用的工作大致都应该包好了。
也就是当你想要自干某些东西时,先问一下同事有没有相似的功能已被实作。
或是你可能打开旧专案,复制一段 code 出来用而已。
这类比较小行数的 cheat sheet 大概只会剩下一些难记的参数。
像是那个我永远记不住的 ffmpeg 参数,或是建立专案时 gradle 编译设定。