2013-03-27 88 views
1

比方说我有一个登录用户的伪代码我应该将代码分解为尽可能多的功能吗?

def login(): 
    # find user in db 
    # check if user exists 
    # check password 
    # login user 

如果每一个动作是其自身功能的功能?或者所有的代码应该留在那里?

编辑:我问这个,因为我通常只把我所有的代码在一个函数,但我的一个朋友把他需要的多种功能做的,然后填充空白的功能,他写下

一切恩。他会写这样的:

def login(): 
    findUser() 
    checkUser() 
    checkPass() 
    userLoggedin() 

他会再创造这些功能和填补他们

+0

一个普遍的观点是,一个函数应该只做*一件事情。我还听说过一个功能不应该超过屏幕上的一页左右,但我不确定我是否真的同意这一点。 – 2013-03-27 22:27:59

+0

为了响应您的'performance'标签,我不应该期望通过现代编译器和优化(如内联)来分解逻辑函数中的代码,从而引发显着的性能影响。 – 2013-03-27 22:53:01

回答

6

我的建议是:

分解成有意义的,可重复使用的功能。当你的代码库增长时,这将是最有用的维护。

# find user in db   => re-usable 
# check if user exists => No. If you find it, it exists. So you don't need that. 
          If you don't find it, it does not. So both should be the same. 
# check password   => re-usable 
# login user    => re-usable 

注:有题为WWDC 2012会话视频:

基础知识+习惯:建立你的软件项目到上次

,你可以观看。目标受众主要是MAC开发人员,但他们的许多建议也适用于其他面向对象的语言。您将需要一个免费的MAC开发人员帐户才能访问它。

+0

+1是的,对于易于重复使用的逻辑关注组而言,还可以在代码库增长时找到常见方法。 – griegs 2013-03-27 22:30:12

+0

检查密码可能应该是在数据库中查找用户安全性的一部分,并最大限度地减少数据库往返行程。未找到用户的结果和密码不匹配应该是相同的。步骤是1.检查用户名和密码组合是否存在,步骤2登录或返回错误。 – 2013-03-27 22:32:59

+0

这确实很重要。谢谢。我会添加它。 – Jean 2013-03-27 22:33:21

1

我会说是的,他们应该被分成单独的项目从Visual Studio的角度讲。

查找用户 - 数据仓库

检查用户是否存在 - 也许模型或业务层

支票密码,模型或业务层

登录 - 业务层

目的这里将代码分组为逻辑关注点。

相关问题