哪种写法合理呢 ?

FingerStyle 2011-11-10 05:26:27
最近纠结于一段代码的两种方式,如下:



// do something...
if (!IsEMailString(str))
{
string err = readfromini();
MessageBox(err);
return ;
}
// do something...
return ;


bool IsEMailString(const string& str)
{
//check...
if (....)
{
return true;
}
return false;
}







// do something...
if (!IsEMailString(str))
{
return ;
}
// do something...
return ;


bool IsEMailString(const string& str)
{
//check...
if (....)
{
return true;
}
string err = readfromini();
MessageBox(err);
return false;
}




哪种方式更好一些呢? 就是UI的提示
string err = readfromini();
MessageBox(err);
这段代码, 因为他的提示是跟IsEmailString紧密相关的, 放到函数里应该可以。 但是 IsEmailString从名字上看 只是判断一个string的,跟UI没关系。。
...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
FingerStyle 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mingliang1212 的回复:]

引用 5 楼 classpatterns 的回复:
引用 1 楼 mougaidong 的回复:

必须第一种,职责单一,可复用性强


单一职责原则是对的,但是.. 如果在很多地方用, 把MsgBox放到 IsEMailString里那不是更方便? 而且MsgBox还要从ini里读文字。

这样完全可以定义一个新的函数来调用这个函数并且输出UI。但是应该改名字了,用Is开头的一……
[/Quote]

恩, 是的。 如果是Is开头的话 第一种方式合理, 如果要把UI放进去的话可以 改个名字 CheckEMailString 之类的..thanks.
seucs 2011-11-10
  • 打赏
  • 举报
回复
很显然第一种,一个函数就做一件事,供其他函数使用
iamnobody 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 classpatterns 的回复:]
引用 1 楼 mougaidong 的回复:

必须第一种,职责单一,可复用性强


单一职责原则是对的,但是.. 如果在很多地方用, 把MsgBox放到 IsEMailString里那不是更方便? 而且MsgBox还要从ini里读文字。
[/Quote]
这样完全可以定义一个新的函数来调用这个函数并且输出UI。但是应该改名字了,用Is开头的一般意未着功能很单纯,,
jijiyuyisheng 2011-11-10
  • 打赏
  • 举报
回复
第一种吧
sunyong380856693 2011-11-10
  • 打赏
  • 举报
回复
都不好啊
FingerStyle 2011-11-10
  • 打赏
  • 举报
回复
其实我是纠结于 UI 提示的代码, 上面只是缩写, 实际可能读很多文字, 会有询问之类的MsgBox..

还是单一职责吧..

if (!IsEMailString(str))
{
ShwoEMailErrMsg();
return ;
}

这样吧。。
FingerStyle 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mougaidong 的回复:]

必须第一种,职责单一,可复用性强
[/Quote]

单一职责原则是对的,但是.. 如果在很多地方用, 把MsgBox放到 IsEMailString里那不是更方便? 而且MsgBox还要从ini里读文字。
iamnobody 2011-11-10
  • 打赏
  • 举报
回复
从 IsEmailString的名字和他的返回值上看,第一种更加合理
IsEmailString 可能返回真和假,应该是一种调用频繁的函数,所以应该尽量轻量化,而且,返回值已经说明了真和假,没有必要再弹出一个消息。特别是有的情况不想弹出消息,只是想检测一下,这个函数就不适用了
ouyh12345 2011-11-10
  • 打赏
  • 举报
回复
一般,在错误发生后,立即获得错误码或错误描述
QunKangLi 2011-11-10
  • 打赏
  • 举报
回复
需不需要错误提示要看需求设计了。想程序继续执行不要,最多写入错误日志文件,需要人工干预就用UI提示。
turing-complete 2011-11-10
  • 打赏
  • 举报
回复
必须第一种,职责单一,可复用性强

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧