算法讨论

loveqise 2016-11-14 09:45:06
软件签审功能,总共有6家签审单位。目前逻辑是任何一家签审完成,就会给其它5家发邮件提醒。但是用户反馈,他已经签审完了,其他人签审还是会发邮件提醒他,邮件太多影响工作 改进方法,一家签审完后,检查剩余五家签审状态。根据概率与统计,事件个数为C55共24种。例如:只有一家签审,就给其余四家发邮件。这种情况五种。加上两家签审、三家签审、四家签审,五家签审的事件,加起来有24种。总共要写24*6个if语句。 请问有什么办法可以简化吗?
...全文
188 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
完全没有挂你 --> 完全没有关系 “3家会签”如果写5行代码,“100家会签”也还是这5代码。
正怒月神 2016-11-14
  • 打赏
  • 举报
回复
很奇怪,你都能 “检查剩余五家签审状态” 那么你为何不在签审前去数据库查一下状态? 已经签审的,那就不发邮件了。或者直接不允许签审就完了
  • 打赏
  • 举报
回复
不论是3家会签、5家会签,还是100家会签,我相信不论是用户还是你的主管都懂得逻辑,都知道这个会签的家数得多少跟写代码的代码量多少(什么“if 语句的行数”之类的)完全没有挂你。 你怎么会设计软件时纠结到最终代码行数问题?
  • 打赏
  • 举报
回复
引用 楼主 loveqise 的回复:
改进方法,一家签审完后,检查剩余五家签审状态。根据概率与统计,事件个数为C55共24种。例如:只有一家签审,就给其余四家发邮件。这种情况五种。加上两家签审、三家签审、四家签审,五家签审的事件,加起来有24种。总共要写24*6个if语句。 请问有什么办法可以简化吗?
你设计软件的过程,只会写 if 语句啊?!这也太奇葩了。那么人家设计软件中涉及到几十万条数据的情况,岂不是要写几十万的几十万次方的 if 语句在源代码里?而数据是“活的”,也根本不能想当然地写到源代码里啊?
by_封爱 版主 2016-11-14
  • 打赏
  • 举报
回复
这是业务逻辑问题而非算法....
plcly1 2016-11-14
  • 打赏
  • 举报
回复
引用 2 楼 loveqise 的回复:
引用 1楼plcly1 的回复:
如果是传统有人工进行发邮件,我要是这个人,我会让别人签审的时候跟我说一下,我就不送过去了
有mail语句自动发邮件
mail语句自动发送就相当于人去送,你在这之前判断一下谁签审了不就好了,签了的不给送
  • 打赏
  • 举报
回复
引用 7 楼 loveqise 的回复:
[quote=引用 4楼娃都会打酱油了 的回复:]
List<string> mailsTo = new List<string>()
{
//所有要发送的
};
if(xxx)
{//移除已经发送的
 mails.Remove(yyy);
}
//发送邮件
我发邮件用的item to语句,要怎么写?[/quote] 不懂你的item to是什么意思,但发给谁这是确认的吧,只是在发送前对要发的列表进行调整,调整完后剩下的就是没审核过的了
loveqise 2016-11-14
  • 打赏
  • 举报
回复
引用 4楼娃都会打酱油了 的回复:
List<string> mailsTo = new List<string>()
{
//所有要发送的
};
if(xxx)
{//移除已经发送的
 mails.Remove(yyy);
}
//发送邮件
我发邮件用的item to语句,要怎么写?
王志威丶 2016-11-14
  • 打赏
  • 举报
回复
LZ可能是想多了,换个思路其实就是特别简单的问题了
xuzuning 2016-11-14
  • 打赏
  • 举报
回复
这与你的数据组织有关 按你的描述,你是用列来保存签审状态的,这样查询起来的确很麻烦 建议改由行来保存,一般还应保存签审意见、签审日期等 这样,无论是有多少家合签,你也只需通知 签审日期 为空的单位
  • 打赏
  • 举报
回复
List<string> mailsTo = new List<string>()
{
//所有要发送的
};
if(xxx)
{//移除已经发送的
 mails.Remove(yyy);
}
//发送邮件
  • 打赏
  • 举报
回复
这要什么算法?发邮件前查询判断下不就行了,已经审批过得从发送名单里去除
loveqise 2016-11-14
  • 打赏
  • 举报
回复
引用 1楼plcly1 的回复:
如果是传统有人工进行发邮件,我要是这个人,我会让别人签审的时候跟我说一下,我就不送过去了
有mail语句自动发邮件
plcly1 2016-11-14
  • 打赏
  • 举报
回复
如果是传统有人工进行发邮件,我要是这个人,我会让别人签审的时候跟我说一下,我就不送过去了
xuzuning 2016-11-14
  • 打赏
  • 举报
回复
string.Join(";", mails)
loveqise 2016-11-14
  • 打赏
  • 举报
回复
引用 8楼娃都会打酱油了 的回复:
[quote=引用 7 楼 loveqise 的回复:] [quote=引用 4楼娃都会打酱油了 的回复:]
List<string> mailsTo = new List<string>()
{
//所有要发送的
};
if(xxx)
{//移除已经发送的
 mails.Remove(yyy);
}
//发送邮件
我发邮件用的item to语句,要怎么写?[/quote] 不懂你的item to是什么意思,但发给谁这是确认的吧,只是在发送前对要发的列表进行调整,调整完后剩下的就是没审核过的了[/quote]item to=邮箱地址,邮箱地址用封号隔开,如item to=“1;2;3”。用list无法实现啊

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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