是用 #if DEBUG 还是用 if(flag) 来区分开发与产品版本

Yanbin_Q 2010-05-14 12:16:22
比如应用在开发时和产品环境分别访问的数据库是 A 和 B

可用的办法有

1:预编译的方式
#if DEBUG
string constr = "point to A db";
#else
string constr = "point to B db";
#endif

优点:不会提示重复定义变量,生成代码是优化的
缺点:当要连到产品数据库调试时,不好办了,DEBUG 又想用 RELEASE 的代码

2: 标识
string constr;
if(flag)
constr = "point to A db";
else
constr = "point to B db";

优点:想怎么调试都行,改下 flag 就换了
缺点:判断逻辑会生成到目标代码中,变量要在判断外预先声明

基于对产品环境问题的重现,我想颠覆一下原来的想法,改为用 flag 来区分的方式。
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yanbin_Q 2010-05-17
  • 打赏
  • 举报
回复
看起来像是五五开,取已所好吧。
加油馒头 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vrhero 的回复:]
只是数据库连接字符串这类用户环境的玩意儿,根本没必要区分...不知道有种东东叫配置文件吗?
[/Quote]

一般用配置文件,直接更改。。
Yanbin_Q 2010-05-14
  • 打赏
  • 举报
回复
如果要断点调试连接产品环境的代码又该如何呢?
wuyi8808 2010-05-14
  • 打赏
  • 举报
回复
#if DEBUG
建议用。
winner2050 2010-05-14
  • 打赏
  • 举报
回复
我一般用来#if DEBUG 来编写一些检查输入参数是否合法。

免得团队里面随便调用,导致程序错误。

测试完成,发布的话,当然就不需要它们了。#if DEBUG里面的代码不被编译进dll。
Yanbin_Q 2010-05-14
  • 打赏
  • 举报
回复
有配置文件,对于两种环境总还是要作出一个判断
vrhero 2010-05-14
  • 打赏
  • 举报
回复
只是数据库连接字符串这类用户环境的玩意儿,根本没必要区分...不知道有种东东叫配置文件吗?
wuyi8808 2010-05-14
  • 打赏
  • 举报
回复
可以这样:
#if POINT_TO_A_DB
string constr = "point to A db";
#else
string constr = "point to B db";
#endif
编译时用 csc.exe /d:POINT_TO_A_DB 或不用 /d 来决定用哪个数据库。

62,063

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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