最近在接手一个项目,打开前本以为会是文件夹包文件夹,代码包代码。但是实际上就只有一个py文件和几个源文件,看的我头都大了。所有功能全挤在一起,注释也很难让人理解代码的含义,这样就在不经意间暴露了一个人的代码水平。都说刚开始程序员写if __name__ == '__main__',后来写 def,再后来写class,最后写文件。那如何快速提高自己的代码水平,让人觉得你的代码合格呢?下面我(changshi)带大家一步一步学会,把一个程序封装成一个系统。

以下程序均以python举例。

OK那么我们先从一个基本问题入手,诸如一个简单的加减法实现。现在要求用户输入一个表达式,我的程序可以正确的返回给他答案,用python可能就eval()就解决了(但是一些复杂的算术式还是无法实现,还是得靠try一类的来捕获错误再具体分析一类的)。于是一个解决程序就出现了:

print(eval(input().strip('=')))

高效编写代码,减少开发时间是python的特点,这个程序甚至不需要头文件一类的,就已经可以处理诸如1+1=?一类的简单加减法问题了。但是假如你取了个名,文件名字就叫operation.py,然后写了篇论文就叫《基于python3.7的单线程运算平台》,然后哗啦哗啦注进去一堆水。多少有些江郎才尽。

那这有人说了,我把他们拆开,能几行完成绝对不用一行。要我说,确实是好方法。

于是第一步下来,你的代码量增加了,看起来也专业了不少,成了下面的样子。

Formula = input()
Pure_Formula = Formula.strip('=')
Operation = eval(Pure_Formula)
print(Operation)

写到这里也是诸多初学者的极限了,也许你确实有完全实现这个功能的想法,但是程序员的一句金句:不要重复造轮子。如果你再分开+-*/来一个个分析那就太愚蠢了(当然在学习阶段还是要一步一步来,培养代码能力更重要,这里说的是你在开发阶段)。

但是不管你的代码名字有多详细,有多优美,随着代码量的增加,都会使其变得臃肿不堪。函数的使用可以在一定程度上帮助你分工。

于是你开始往里面添加函数,让他看起来更加分明一点。(在实际编写代码的过程中,不一定需要通过函数来使代码简洁易读,也可以单纯通过空两行或是多行注释来使代码具有可维护性)

def operation(formula: str) -> int or float:return eval(formula)if __name__ == '__main__':Formula = input()Pure_Formula = Formula.strip('=')print(operation(Pure_Formula))

恭喜!现在已经进行到了完美的一步,代码量增加了,看起来也高级了不少,而这也是不少使用python的止步之处,似乎再多下去就毫无意义了。但其实不是的,光拿钱和说话比硬气的时候都用得到的啊哈哈哈。

不过言归正传,现在已经初具规模了,但是显而易见,目前仍然摆脱不了只有一个python文件的淡薄,拿出去还是给人笑话。我把它分成三大步,这是第一步,下一步就是类的运用了。

如何把一个程序封装成一个系统?(1)相关推荐

  1. c程序封装linux,Linux系统使用C语言封装线程读写锁

    在Linux平台上已经有现成的线程读写锁pthread_rwlock_t以及相关API,现将这些API封装成与Win32平台上相同的接口,以便于编写跨平台程序.这些API包括pthread_rwloc ...

  2. 程序题智能批改系统需求分析

    本人对下述需求进行了代码实现,使用ssm框架.涉及到Java的动态编译方面的知识,另外,评分通过获取后台数据库中的测试用例,动态执用例进行评分. 需要源码的可以扫码关注公众号『嗜码』,回复「程序题批改 ...

  3. cordova 一个将web应用程序封装成app的框架

    cordova 一个将web应用程序封装成app的框架 cordova的详细介绍请参考这个链接:http://www.zhoujingen.cn/blog/7034.html 我接下来主要将如何搭建. ...

  4. c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...

    北方民族大学 课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : 软件工程(2)班 学 生 姓 名 : 李思良 学 号 : 任 课 教 师 : 王晓锋 学 期 : 2015-2016学 ...

  5. [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)...

    [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥) nohacks 发表于 2016-5-29 17:12:51 https:// ...

  6. WIN10系统下提示文件被另外一个程序打开无法重命名、删除、移动的解决方法

    文件或文件夹需要重命名或者删除或者其他操作的时候,提示文件被另外一个程序打开,无法操作的时候,可采取以下方法解决 1.句柄结束进程 打开任务管理器,CTRL+ALT+DELETE 打开--性能--打开 ...

  7. VMware Workstation——虚拟机启动Ubuntu系统时报错:“另一个程序已锁定文件的一部分,进程无法访问”解决办法

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <嵌入式Linux开发实战> [问题]: 元旦前 ...

  8. 三菱伺服定长追剪,系统为Q172DSCPU,高级同步模式。 包含一个程序例子,有详细的机械参数分析,伺服参数设置

    三菱伺服定长追剪,系统为Q172DSCPU,高级同步模式. 包含一个程序例子,有详细的机械参数分析,伺服参数设置,以及追剪凸轮表设置的由来. ID:69100609575345770个人资料窝

  9. 三菱伺服定长追剪,系统为Q172DSCPU 包含一个程序例子,有详细的机械参数分析,伺服参数设置

    三菱伺服定长追剪,系统为Q172DSCPU,高级同步模式. 包含一个程序例子,有详细的机械参数分析,伺服参数设置,以及追剪凸轮表设置的由来. ID:69100609575345770个人资料窝

最新文章

  1. rommon模式下给路由器灌入IOS
  2. 构建高性能的ASP.NET应用(五)-如何开始寻找性能瓶颈
  3. 理解在javascript中的内存泄露
  4. Atitit 图像处理的心得与疑惑 attilax总结
  5. java jsp失效问题--待解决
  6. 计算机无法开机按了f2,Win7系统开机需要按F2怎么解决?
  7. Java黑皮书课后题第7章:*7.13(随机数选择器)编写一个方法,返回1到54之间的随机数,但不能是传递到实参中的数。指定如下方法头
  8. 浅谈tomcat中间件的优化【转】
  9. 面向对象进阶------内置函数 str repr new call 方法
  10. LTR学习排序 Learning to Rank 小结
  11. java中element转换_java中实体类与xml的element相互转换
  12. php curl 返回cookie_分享新浪图床上传接口PHP源码
  13. EmEditor中,正则判断行中是否存在自动字符串
  14. 计算机车辆识别检测毕业设计,车辆识别论文,关于基于计算机网络技术的车辆识别技术相关参考文献资料-免费论文范文...
  15. poi 默认2位小数_Poi excel设置小数位数
  16. c语言结构体memcmp,用memcmp()比较结构体
  17. iPhone【未能激活蜂窝数据网:您尚未订购蜂窝数据服务】解决!
  18. 只需4步,就能在SOLIDWORKS创建首件检验报告(FAI)
  19. 【情报工具】分享15款保护隐私的搜索引擎
  20. 要学完Java大概需要多长时间

热门文章

  1. 大一大学计算机论文摘要,计算机大学论文摘要怎么写 计算机大学论文摘要范文参考...
  2. 6.2 网络钓鱼攻击
  3. Leetcode-Mysql题目及知识点总结(597. 好友申请 I:总体通过率)
  4. 重大问题,Windows11出现重大BUG(开始菜单掉帧,卡顿)
  5. android操作系统如何卸载软件,安卓手机系统预装软件如何卸载
  6. 学习笔记---原文网址在第一行
  7. 大型ICP正在重新激活海底光缆市场 2022年收入将超14亿美元
  8. JAVA毕业设计计算机专业招聘网站计算机源码+lw文档+系统+调试部署+数据库
  9. 马云卸任后去蹦迪了?都是假的。
  10. SMO的MSDN文档