相关疑难解决方法(0)

你最有争议的编程意见是什么?

这绝对是主观的,但我想尽量避免它变得有争议.我认为如果人们适当地对待它可能是一个有趣的问题.

对这个问题的想法来自评论跟帖从我的回答:"你恨你喜欢的语言什么的五件事?" 问题.我争辩说C#中的类应该默认密封 - 我不会把我的推理放在这个问题上,但我可以写一个更全面的解释作为这个问题的答案.我对评论中讨论的热度感到惊讶(目前有25条评论).

那么,持有什么有争议的意见?我宁愿避免那种以相对较少的基础(例如括号放置)而变得非常宗教的东西,但是例子可能包括诸如"单元测试实际上并不十分有用"或"公共领域真的很好"之类的东西.重要的是(对我来说,无论如何)是你有理由支持你的意见.

请提出您的意见和推理 - 我鼓励人们投票支持有争议和有趣的意见,无论您是否恰好同意这些意见.

language-agnostic

363
推荐指数
237
解决办法
29万
查看次数

Javac调试开启和关闭是否有性能差异?

如果我打开使用Javac生成调试信息,则类文件大20-25%.这对运行Java程序有任何性能影响吗?如果是,在哪些条件和多少.我希望对加载类有一点影响,因为文件较大但这应该是最小的.

java debugging performance javac

60
推荐指数
3
解决办法
2万
查看次数

使用什么版本编号方案?

我正在寻找一种表示变化程度的版本编号方案,尤其是兼容性.

例如,Apache APR使用众所周知的版本编号方案

<major>.<minor>.<patch>
example: 4.5.11
Run Code Online (Sandbox Code Playgroud)

Maven提出了一个类似但更详细的架构:

<major>.<minor>.<patch>-<qualifier>-<build number>
example: 4.5.11-RC1-3732
Run Code Online (Sandbox Code Playgroud)

Maven版本控制方案在哪里定义?是否有限定符和内部版本号的约定?可能使用maven但不遵循Maven版本方案是个坏主意...

您知道哪些其他版本编号方案?你更喜欢什么方案?为什么?

versioning schema maven

27
推荐指数
3
解决办法
3万
查看次数

断言总是坏的吗?

我曾经在一家公司工作,其中一些主要架构师/开发人员已经强制要求断言不使用的各种项目,并且他们通常会从代码中删除并替换为异常.

我觉得他们在编写正确的代码时非常重要.任何人都可以建议如何证明这样的授权是合理的吗?如果是这样,断言有什么问题?

c++ exception assertions

20
推荐指数
3
解决办法
4016
查看次数

使用#ifdefs和#define可选择将函数调用转换为注释

有可能做这样的事情

#ifdef SOMETHING
#define foo //
#else
#define foo MyFunction
#endif
Run Code Online (Sandbox Code Playgroud)

这个想法是,如果定义了SOMETHING,那么对foo(...)的调用将成为注释(或者不会被评估或编译的内容),否则它将成为对MyFunction的调用.

我见过__noop,但我不相信我可以使用它.

编辑(S):

我不认为我真的可以在这里使用宏,因为MyFunction采用可变数量的参数.

此外,我想这样做,所以参数不被评估!(所以做一些像评论我的MyFunction的主体并没有真正给我我需要的东西,因为参数仍将被评估)

c c++ conditional-compilation c-preprocessor

15
推荐指数
2
解决办法
3万
查看次数

无需使用调试器即可有目的地进行调试?

"编程实践"的第5章中,Brian KernighanRob Pike写道:

作为个人选择,除了获得堆栈跟踪或变量或两个变量的值之外,我们倾向于不使用调试器.

虽然我没有关于该主题的经验数据,但我怀疑许多程序员可能会在他们的环境中有一个可用的"调试器"中"活".但我也怀疑有许多高效的程序员,像Kernighan和Pike一样,避免将调试器作为第一道防线并依赖其他技术.

所以,我想问一下stackoverflow社区:

如果您是那种将"调试器"工具视为最后手段(不是获得初始堆栈跟踪)的程序员,那么您首先使用其他技术的原因是什么?

每个答案一(1)个理由请更容易投票!

我还建议这个规则回答:"我不知道如何使用调试器"不是一个有效的答案.那只是无知.在做出选择之前,您应该了解您的替代方案!

debugging

13
推荐指数
6
解决办法
2446
查看次数

如何在没有调试器的情况下调试程序?

面试问题 -

一旦你的代码出现问题,通常很容易调试程序.你可以把手表,断点等放在一边.由于调试器,生活更容易.

但是如何在没有调试器的情况下调试程序?

我知道一种可能的方法是将print语句放在代码中的任何地方,以便检查问题.

除此之外还有其他方法吗?

作为一般性问题,它不受任何特定语言的限制.请分享您对如何做到的想法?

编辑 - 在提交您的答案时,请提及有关任何概念的有用资源(如果您有的话).例如,记录
这对那些根本不了解它的人会很有用.(这包括我,在某些情况下:)

更新: Michal Sznajderhas提出了一个真正的"最佳"答案,并使其成为一个社区维基.真的值得很多投票.

debugging

13
推荐指数
3
解决办法
7142
查看次数

静态与非静态函数 - 调试嵌入式系统上下文

我对以下问题感到困惑:如何保持"静态"标签的优势,但仍然能够在现场调试生产代码?

一旦发生意外行为发生在客户站点,并且仅在那里发生.在许多情况下,可以选择执行调试可以节省大量精力并提供非常快速的响应.这样的调试通常涉及检查函数行为,这使我们进入"静态"定义.

无法从调试shell调试静态函数,例如放置断点或执行它.另一方面,将所有函数定义为public会导致代码结构和优化悲伤.

我知道有一些选项,比如编译至少两个不同的版本,一个是静态的,一个是没有,但是这很适合自动化测试,而不是最终的生产版本.

我们会从您这里获得一些见解,主要是关于您如何解决(如果有的话)这种困境.或者将问题改为:" 什么更重要? "

这里对C中"静态"的讨论很好.

c embedded debugging static

7
推荐指数
1
解决办法
2135
查看次数

您在什么阶段在OO中添加日志记录和跟踪?

我对您的开发中的哪个阶段添加日志记录和/或跟踪到您的应用程序感兴趣?

我正在使用.Net堆栈和log4net(通过commons.logging).一般采用TDD方法进行开发虽然不是100%,但有时我知道在没有测试覆盖率的情况下飙升.我的应用程序都在服务器端,例如Web服务,消费总线消息的Windows服务,asp.net mvc业务管理应用程序.等等..

我发现自己在我的应用服务中使用描述性的logger.INFO"从存储库中获取蛋糕"来装饰方法.一些工作......"从存储库中获得了5个蛋糕.",然后是一个未处理的expcetion处理程序,用于appger doamin到logger.FATAL,用于意外的消息,它会冒出来.

然而,我通常最终会回到开发阶段而不是在开发开始时应用这些,而我可能只有十几个.我发现我很少装饰任何较低级别的类,例如使用logger东西实现ICakeRepository,因为它似乎毫无意义.

对于通过配置打开的跟踪,我正在考虑使用IOC框架拦截方法调用和实例创建,这应该考虑到现场故障而不是繁重的跟踪人口.

logging log4net trace

6
推荐指数
1
解决办法
374
查看次数

静态代码分析:集成到调试和发布版本中,还是只集成一个或另一个?

作为最佳实践,您是在调试和发布版本上运行代码分析,还是只运行其中一个?

code-analysis

6
推荐指数
1
解决办法
914
查看次数

一个特定的C编程风格问题?

我听过很多关于编程风格的重要性.在我看来,缩进很容易处理.但其他事情让我很沮丧.考虑一个特定的例子来演示inet_makeaddr的使用.

/* demonstrate the use of host address functions */
#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int
main(void)
{
 /* inet_makeaddr demo */
 uint32_t neta = 0x0a3e5500;
 uint32_t hosta = 0x0c;

 struct in_addr alla = inet_makeaddr(neta, hosta);

 printf("makeaddr of net: %08x and host: %08x = %08x\n", 
    neta, hosta, alla);

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可能想写如下:

 uint32_t neta;
 uint32_t hosta;
 struct in_addr alla;

 neta = 0x0a3e5500;
 hosta = 0x0c;
 alla = inet_makeaddr(neta, hosta);
Run Code Online (Sandbox Code Playgroud)

然后其他人可能总是在定义时初始化变量:

 uint32_t neta = 0;
 uint32_t hosta = 0;
 struct …
Run Code Online (Sandbox Code Playgroud)

coding-style

0
推荐指数
1
解决办法
725
查看次数