2012-01-03 65 views
0

我希望得到什么应该被包含在一个方法或函数的一些意见。决定什么方法/函数应该/不应该做

比方说,我有一个功能的工作是在一个论坛上的回复发送电子邮件通知。假设我使用了一个Mailer库来处理所有实际发送SMTP消息的细节,并且我已经抽象出诸如body之类的东西作为模板,To,From,Reply-To字段显然都是变量,并且存在还有与所述用户已经订阅的论坛帖子相关的帖子ID。

如何这些变量的许多人会在你作为参数传递?一系列参数?您是否只需传入用户名和帖子ID,并在该函数中使用另一种方法(如果在同一个类中)或函数来检索所需的详细信息(如电子邮件地址,用户名,帖子标题等),或者使函数更脆弱,更不容易被重用作一般邮件函数/方法。

我知道有很多的,这是主观的“依赖”,但我感兴趣的思维过程去后面做决定这种或那种方式。

+0

你知道和了解[SOLID原则](http://en.wikipedia.org/wiki/SOLID_(对象oriented_design))? – Oded 2012-01-03 15:43:06

+0

从来没有听说过它。 – gravyface 2012-01-03 15:44:01

+1

我建议你阅读那个链接,然后给自己一份清洁代码。 – Oded 2012-01-03 15:54:35

回答

0

我可能会加载一个帮助类实例,它封装了完整定义电子邮件,To,From,cc,主题,主体,附件向量以及返回结果所需的所有内容所需的所有内容 - 成功/失败布尔值,错误消息字符串和一个事件,在完成时用助手实例作为参数调用。然后我会用这个实例调用emailer函数。然后电子邮件发送者可以随意发送电子邮件。它可以自己完成邮件,也可以将它排队等待另一个线程或进程,稍后在邮件完成时触发事件(或者当然,失败:)。当事件触发时,处理程序可以检查发生了什么,并采取适当的行动 - 稍后重新发送,排队等待记录器,排队等待GUI显示或者将其销毁。