2012-02-08 83 views
2

我有以下情况。 有些人使用方法1和一些使用方法2. 两种方法都具有相同的功能锁定或解锁新闻表中的新闻ID。 你的建议,哪一个更好,为什么?最佳做法,1种方法和2种方法的相同功能

注:我使用void返回类型,而不是布尔为简单起见,请忽略此

方法1:

public void LockNews(long newId) 
{ 
...... 
} 

public void UnlockNews(long newId) 
{ 
... 
} 

方法2:

public void LockUnlockNews(long newId,bool Islock) 
{ 
...... 
} 
+0

这是什么样的锁? – weston 2012-02-08 09:31:27

+0

锁在数据库中是fag的,你可以说这个消息被锁定以供审查 – Ali 2012-02-08 09:36:12

+0

对于我来说,这取决于逻辑,如果有很多逻辑你不想在两个函数中复制它。然后,您也可以实施方法2,将其设为私有,然后从每个后续功能中调用它。 – ThePower 2012-02-08 09:36:35

回答

3

方法1,对我来说,因为恕我直言,方法应该代表一个单一的操作。为了编写可测试代码或任何形式的自动化测试,它将保持清晰的分离并使其更有意义。

方法2倾向于“尽一切”的操作,恕我直言,应该避免。

1

我更喜欢方法1.它清楚地说明发生了什么。如果您使用方法2并致电

LockUnlockNews(42, true); 

现在不清楚这是锁定还是解锁。 只是为了抛出一些燃料:如果你将bool更改为枚举或常量,那么我的参数是无效的。

LockUnlockNews(42, LOCK); 

是一样清楚

LockNews(42); 
1

第一种方法。

您的方法是命令并应尽可能明确。我甚至会问你为什么有人,但新闻本身知道如何锁定/解锁?对我来说新闻应该对它负责:

var news = GetNewsSomehow(newsId); 
news.Lock(); 
news.Unlock(); 

更有意义,不是吗? :)你清楚地看到你的对象是什么,他们有什么行为。这就是OOP中所谓的封装

0

我结合这两种方法一般在想:

公共方法提供界面清晰更容易测试

public void LockNews(long newId) 
{ 
    LockUnlockNews(newId, true); 
} 

public void UnlockNews(long newId) 
{ 
    LockUnlockNews(newId, false); 
} 

私有方法做实际业务增加模块性 managin g东西从一个位置:

private void LockUnlockNews(long newId,bool Islock) 
{ 
    ...... 
}