“New”一个完美对象,再来好好面向对象

本文记录了一位程序员从C++新手到熟悉Python和Linux的过程,包括初次接触面向对象编程的困惑、在项目中学习单例模式、遇到的C++异常处理问题、Linux操作失误及Python爬虫实践。他在工作中逐步提升技能,从数据分析转向金融软件开发,并在个人生活中找到了新的方向。
摘要由CSDN通过智能技术生成

0. 题记

  四年前,也就是2016年的5月,我从祖国的大南方深圳转战到北京,正式从一名数据分析统计员(量化统计分析)成为一名自豪的C渣渣 “程序猿” \ “攻城狮”,从此很快乐地New对象。

  下文是自己的一点经历和一些不成熟或错误的经验,请谨慎批判性阅读。

1. 为什么要面向对象?

1.1 面向过程它不香吗

  上学的时候,课堂上必修过C,用Matlab搞过建模比赛,都是面向过程,根据问题,写各个函数,main调用函数解决问题,即使有属性什么的,都放在struct中了,面向对象是啥?为什么要面向对象?

1.2 我这算是学习了面向对象

  大三的时候选修的C++,正好遇到上课的老师还在怀胎,本来一个学期也没几节课,又有一半的课她请假了,更没去过实验室。就这样,一行C++代码都没写的情况下,算是把这门课学完了。

  最后,好似知道C++好似比C多了一个class,每次解决问题的时候还得先建立一个类,再new一个对象?类中还得分publicprotectedprivate,为什么要这样,创建类好麻烦啊!直接一个function它不香吗?

  以上种种抱怨,都是因为没做过工程,没面对过复杂问题,不知道项目project、解决方案solution为何物。

2. 初步接触大工程

2.1 来来来,入职第一步,熟悉环境

  在北京,试用期的2个月,我是在惶恐和紧张中度过的。周末也不敢出去玩,看公司的技术文档,调试项目,学习新技术,菜鸟教程一直是自己的入门首选。一个120多个project的客户端工程,当时光安装IDE(vs2008),部署环境,编译过,跑起来,就用了整整一天。

  入职第一周学习使用这个客户端(股票交易客户端),用客户端支持的VB语言(老一代炒股软件必备支持语言)重写一些自己之前用Matlab写的回测模型(量化策略回测),模拟运行策略。

  是的,小弟进的是金融软件公司,没在猪都能飞起来的互联网。

2.2 优秀而龌龊的单例

  第二周开始,我的老大就开始测试我水平了,让我做一下客户端的回测功能,增加回测结果评估指标的计算,保存虚拟委托,成交,持仓,让我先写一个方案。

  我根据自己前面所看的,发现项目中有多个地方使用单例这个设计模式,正好我的这个回测也可以用单例,一个大中心,根据回测模型的requestId区分不同的策略,计算,保存各个值。后来(多年?)想想,用什么单例啊,一个策略对应一个回测处理对象它不香吗。

3. C++代码要怎么写?

3.1 如何建立一个类?

  这个简单,项目中有的是类,copy一个,改改就是自己的了。哎,程序猿,特别是我这种半吊子,copy是一个必备的技能,知道怎么copy,copy哪里,copy后怎么改都是需要实力的嘛。

3.2 代码怎么写?

  说真的,我当时真的遇到了一个大大的问题。*try…catch什么时候用,每个方法中都要用吗?对自己写的代码会不会引发异常?会引发什么异常?额,这完全没有概念嘛。

  那,都加上下面这个万能的try…catch吧。

  try
  {
      //your code
  }
  catch (...)
  {
      //your exception handle
  }

  这个**…**简直不要太香。

3.3 后来老大发话了

  老大说你这样写代码不行啊,都是try…catch影响程序性能。像这种不是文件读写,数据库连接,没必要加try…catch嘛,指针为空,数组越界什么的,自己用if语句判定就行,别用try…catch,浪费呀。

  哦!!!???

4. Linux好难呀

4.1 我可能是个编程小天才?

  搞完了上面的模型回测小小功能,我马不停蹄用不到2周就搞定了金仕达V8T行情对接。对比另一位同事用了2个月也搞不定另一个行情对接,老大觉得我简直是个编程天才啊。

  天知道,我只是把我的小组长写的对接V6T的整个project复制了一个,换个名,然后更换下使用V8T的dll和lib库,这个工作就弄好了。之所以用了2周,还是需要调试时间的嘛,顺便向小组长请教下大概流程。行情是如何订阅,如何回来,怎么解析,这些还是要知道一点的嘛。

  哎,天才个屁,运气好点,有了一个好小组长,和一个现成的项目,哈哈哈!

4.2 我的新任务——爬虫

  老大可能觉得我实力大大的有了,有一天他直接问我和另一名同事,你们搞过python吗?

  我的回答是,就简单学习了一下。

  “我们的客户端F10一直不完善,股票信息,股东信息一直没有,你爬爬交易所,别人的,如同花顺,搞一个我们自己的金融数据库吧!”

  搞一个金融数据库?What the Fuck!没事儿,没事儿,我不断安慰自己,初入猴圈,有的是冲劲,正好最近在菜鸟教程上学习了Mysql,搞起。

  证据在此,当时爬网页的时候写的文,python爬虫—post抓取查询数据简单说明,还有几篇别的。

4.3 什么鬼啊?我搞垮了一台服务器

  爬到数据了,当然要存库了。然后我期待已久的Linux操作来了,纯命令模式,简直不要太高大上。我有点兴奋呀,直到我想删除一个文件夹下的所有文件,使用了下面的命令:

rm -rf /* 

朋友圈为证:
在这里插入图片描述

4.4 其实项目(功能)是可以无疾而终的

  虽然,后来没有被炒鱿鱼,金融数据库也搞起来了,但是在客户端取数据做展示这一块迟迟没有搞(需跟另一位前端同事对接)。后来别的更急的项目来了,这个就不了了之了。小弟也最终只是练了一把Linux和python的手。

5. 完美对象New不来,还是找一个吧

5.1 我们相遇的平台

  17年的时候,开始搞新的极速交易客户端,支持python策略量化交易。在做这个项目的时候,遇到了很多问题,python锁,多线程冲突崩溃,内存不够,下单慢等等。自己也感觉遇到技术瓶颈,一些性能问题解决起来有心无力。

  18年,在教一个测试如何用python在客户端上写策略,进行测试的时候,我们一起吃了个饭。后来多个周末,相伴第一次去游览了故宫,景山公园,北海公园,后海,南锣古巷,国家图书馆,动物园,颐和园,圆明园,朝阳公园…

  我终于有了一个不用New的对象,从此能更好面向对象啦。

6.后记

  2019年6月21日,历时3年零2个月,我结束了我第一份程序猿工作。在这里,从小白变成了老白,Ctrl+C,Ctrl+V用的炉火纯青,但坑好似越来越多,在被埋之前,我脱坑了。

  后来的工作或平时中,用python搞过自动化测试,学了一点点前端,用Django搞过自己的简单网站,学了一点点java,搞了一点点C#,还在继续使用着C++。

  自己好似,终究没有深入过某一门技术,都是在不断的项目功能驱动中,用着纯中文的搜索,在性能不太行,代码可猥琐的道路上蹉跎前行。

END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值