创业公司与代码技巧

我在搭建榄盛邦的后台框架(类MVC,基于Python Flask开发)的时候,在Model基类的构造函数里写了一个小功能。即如果构建Model对象时如果没有传入DBSession对象(SQLAlchemy数据库Session对象),则自动创建,并赋值给self.session。这样做的好处主要是简化开发。例如:

原写法:

def update_username(user_id, username):
    db_session = DBSession()
    Model(db_session).update_username(user_id, username)
    db_session.close()

新写法

def update_username(user_id, username):
    Model().update_username(user_id, username)

减少了一些代码量,也让代码看起来更舒服。但是这段代码让我以后麻烦不断。

有一次,我被告知用户提现,显示提现显示失败,但余额被冻结,过了很久前既没有到账,也没有退回到余额。我查询服务器得知,在向第三方支付服务器发送提现请求时,因为网络问题出现了超时异常。

我检查了一下代码,发现后台程序员使用了没有传递DBSession对象的Model 对象。原因是使用不传递DBSession对象的Model 对象习惯了,函数里没有DBSession对象,于是也没有想到出现异常回滚的操作。我当时令其修稿,但是后来还是会不时出现这种事情。

后来我想到,如果我当初没有编写这个功能,出错的概率会不会小一点。我想是的。

总结:在创业公司,受困于资金:

  • 很难招到足够水平的开发人员
  • 往往缺失了测试环节

也就是说,创业公司开发的产品,容易出BUG,而且有相当一部分的BUG是在上线后才逐渐浮现的。我对此的应对意见是:在不能招人、增加测试的情况下,尽量使用最简单的方式,尽量不使用技巧。

你可能感兴趣的:(创业公司与代码技巧)