您现在的位置是:新闻

如何搞笑编程

2018-09-14 15:23新闻

简介今天要给大家分享一下如何高效编程,顺带优化一下上一个爬妹子的Demo。 Lets go! 当我们开始一个project的时候,心里总是激动满满,各种功能都想的很和谐,但是当双手放到键盘的时候,却又手足无措,不知道该干些什么。 现在大多数编程语言都支持面向对象(oo...

今天要给大家分享一下如何高效编程,顺带优化一下上一个爬妹子的Demo。

Let's go!


当我们开始一个project的时候,心里总是激动满满,各种功能都想的很和谐,但是当双手放到键盘的时候,却又手足无措,不知道该干些什么。


现在大多数编程语言都支持面向对象(oop)编程,采用oop编程的好处就是能够按照人类的习惯来编程,在oop的世界中,任何事物皆对象,每个人,每个电脑,等都可作为对象,把这些具有相同属性、相同行为的一类对象经过抽象,成为一个具有属性和方法的类。每个对象都是类的一个实例。


编程语言从原始的机器语言到汇编,再到现在的诸多高级语言,每种语言都都有它各自的特点,但是,它们越来越面向程序员了,不断的增加新的特性,变得越来越友好,让我们能够高效的编程,我想这应该是每个语言的初心:对用户友好。


然而为什么还是写不出好的代码?


我想可能有下面的问题:

基础不牢,每个方法、模块常用的语法还不够熟悉。这个问题,基本是每个人都有的,计算机发展的太快了,现在连小学生都开始学Python了,只能说明一是现在计算机相关人才缺口太大,需要从小打基础,培养兴趣爱好。其次是Python简单啊,对吧,。


思维不够严谨。编写一个helloworld程序非常简单,不用考虑内存的溢出,索引的越界,何时该跳出循环,这些都需要你的逻辑思维足够严谨,不然你run了一个程序,能够运行,但是好多漏洞,实在不忍直视。


目标不够明确。在写一个Demo的时候,首先要确定它能实现什么功能,用什么方法实现,要用到什么模块、库,需要什么数据,等等都是写代码之前应该考虑的。


耦合性太高。一个好的代码,是能够复用的。你不必为了实现某个功能自己再去动手造轮子,我们可以用别人写好的工具,能省好多利器,当然,如果有足够时间,还是有必要研究底层的实现。那么,在自己写代码的时候,如何造出优秀的轮子?

等等吧,还存在很多问题。最最要的还是把基础搞好。


那么,说了这么多,怎么才能高效编程?

个人所见:

首先确定目标。包括程序的功能,用什么方法实现,需要什么模块,程序的可行性,有了明确的目标才能走好每一步。


像‘人类’一样思考。为什么oop会火,因为它友好。程序就是为了减轻人力的成本,将一切自动化,在现实中是既用的。那么,就要模拟现实中的生产过程,符合自然的发展规律。比如,要画一个玫瑰花,你怎么办,想像一下花是怎么生长的不就好了,再则,要解决一个多线程的问题,那么我们可以想象一下生活中的很多例子,多线程下载,多线程打饭,多线程通道等等,很多都是从现实高度抽象的。


解决了过程问题,那么就是程序的严谨性。再好的程序也会有漏洞,我们想不到的异常,或者在未来的几年,或者是几十年突然发生,当然,现在软件更新的速度也很快。都是为了修复bug,填补漏洞。在这方面就需要我们的经验了,走过的坑多,就会有一定的遇见性,所以,不要怕错,要尝试去犯错。


最后就是总结。这个我觉得很有必要,做什么都要有个总结,不断总结经验教训,才能更好的看清问题,认识到事物的本质。


祝每个程序员都能写出高质量代码。


现在就来总结一下我的Demo。

这个Demo经过改进,增加了很多特性,包括oop,多线程,xpath,生成器等。

但还有很多不足。此多线程并非我所想。

源码已上传到github上,点击文末阅读全文进行查看。觉得不错的给个star吧。

来说说我的过程。


首先,进行高度抽象,确定主要的架构,然后各自突破。


下面就是依次实现每个函数的具体功能。

生成器我用来实现网页信息的封装,利用xpath可以很便捷的获取到需要的内容,包括地址和提示,都暂时存放在一个dict中。这里我用了一个yield dict,这是一个用于构建生成器的方法,每次都通过next(generator_util())来实现dict的获取。


下载器我用来下载图片到本地。判断每个路径是否存在,通过get获取二进制文件,并下载保存为图片。


处理器本来我是打算用来调度线程的。可是,好叭,没有可是,后来处理器被我ctrl+d了。

后来我又写了一个线程函数,用来进行线程的调度,恩,对,就是这样。


功能基本实现了。但还是有诸多不足。里面还是有很多思想值得借鉴的。

更多细节请点击阅读原文,查看代码。


欢迎提出问题和批评。

在公众号内直接回复即可。

Tags:如何,搞笑,编程,今天,要给,大家,分享,一下,如何,高效,