小编Rya*_*rle的帖子

#pragma曾经安全包括后卫吗?

我已经读过使用时会有一些编译器优化,#pragma once这会导致更快的编译.我认为这是非标准的,因此可能造成跨平台兼容性问题.

这是非Windows平台(gcc)上大多数现代编译器支持的东西吗?

我想避免平台编译问题,但也想避免后备警卫的额外工作:

#pragma once
#ifndef HEADER_H
#define HEADER_H

...

#endif // HEADER_H
Run Code Online (Sandbox Code Playgroud)

我应该担心吗?我是否应该在这方面进一步消耗精力?

c++ include-guards

283
推荐指数
9
解决办法
15万
查看次数

我的工具箱中应该有哪些现代C++库?

我已经退出C++游戏大约10年了,我想重新开始使用商业应用程序.现在有哪些图书馆在使用?

  • 用户界面(例如,wxWidgets,Qt)
  • 数据库
  • 通用(例如Boost,Loki,STL)
  • 穿线
  • 测试
  • 网络/插座

我期望跨平台兼容(尽可能开箱即用).

您依赖哪些图书馆?他们提供哪些功能使其"不可或缺"

请参阅下面的答案以获取摘要.

c++

182
推荐指数
6
解决办法
9万
查看次数

4j是什么意思?

我注意到一些java库使用它作为后缀:

log4j, couchdb4j, neo4j, launch4j, etc..
Run Code Online (Sandbox Code Playgroud)

java libraries

51
推荐指数
2
解决办法
5391
查看次数

Pimpl成语在实践中

关于pimpl成语有一些关于SO的问题,但我更加好奇它在实践中的使用频率.

我理解在性能和封装之间存在一些权衡,加上一些调试烦恼,因为额外的重定向.

有了这个,是应该采用每个类,还是全有或全无的方式?这是最佳做法还是个人偏好?

我意识到这有点主观,所以让我列出我的首要任务:

  • 代码清晰度
  • 代码可维护性
  • 性能

我总是假设我需要在某些时候将代码作为库公开,所以这也是一个考虑因素.

编辑:任何其他选项来完成相同的事情将是受欢迎的建议.

c++ pimpl-idiom

47
推荐指数
5
解决办法
2万
查看次数

由软件开发人员驱动的创业公司常见的陷阱是什么?

我和朋友创建了一家初创公司,但我们都是软件开发人员.我们很快意识到,我们将不得不处理和理解所有复杂的业务.

是否有任何资源可以帮助我们避免非商业头脑遇到的常见问题?如何平衡创建产品与保持现实目标,以缩短产品上市时间.

这就像你需要脱掉程序员的帽子并戴上商务帽,反之亦然.

startup

44
推荐指数
6
解决办法
2886
查看次数

覆盖生成的Java源代码中的行号

有没有办法覆盖Java中的行号(例如,通过使用某种预处理器指令)?

我正在使用Janino"编译"高级语言,直到Java字节代码.我需要编译器错误来报告原始文件中的行,而不是生成的Java代码.

C#有#line指令,我已成功利用它将源文件中的行号映射到编译结果.Java需要相同的东西.

谢谢!

java code-generation annotations janino

14
推荐指数
2
解决办法
1462
查看次数

春天是一个美化的工厂; 这可以接受吗?

我刚刚继承了一个Java应用程序,在检查代码后,我看到了IMHO是Spring框架的混蛋.你看,Java团队似乎对接口有厌恶,所以我们最终得到这样的东西:

@Autowired
private SomeConcreteFinalClass _myField;
Run Code Online (Sandbox Code Playgroud)

没有Spring配置,没有定义bean,也没有机会我可以单独测试包含对象.这本质上是一个基于注释的工厂,具有Spring的开销.

我不在线,还是像用大象枪杀死苍蝇?我只需要进行现实检查,因为团队中的其他人都认为这是完全可以接受的.

编辑 在许多情况下,这些带注释的工厂出现在复杂的处理类中,这些类将从隔离测试中获益匪浅.该团队也对测试表示不满.

我希望,这里没有任何神秘感.如果我有一个具体的类,那不是一个接口,并且没有相应的Spring bean来"设置"该对象,那么它无疑是一个可以用10行代码实现的美化工厂.

Spring在系统中没有以任何其他方式使用; 就是这个.

我现在的目标:

  • 制定测试政策
  • 教育团队了解组件隔离的优点
  • 将这些Autowired字段移到接口后面

我想最后一个问题是:如果我们没有测试或以任何其他方式利用框架,保持这些字段是否有任何好处.new如果依赖项是不可变的,我也是对象.

java spring

8
推荐指数
1
解决办法
444
查看次数

Java对象为int:更好的方法?

我有一个TreeSet,它将充满整数.总而言之,我试图在列表中存储的最后一个(最大)值之后循环.我现在要做的是获取起始变量:

    Object lastObj = primes.last();
    Integer last = new Integer(lastObj.toString());
    int start = 1 + last.intValue(); // the added 1 is just for program logic
Run Code Online (Sandbox Code Playgroud)

我确信必须有更好的方法将对象(我知道永远是一个int)转换为int'start'.有人知道更好的方法吗?

java generics

7
推荐指数
2
解决办法
4万
查看次数

我应该封装我的IoC容器吗?

我正在尝试决定是否有必要通过额外的努力来封装我的IoC容器.经验告诉我,我应该在我的应用程序和任何第三方组件之间放置一层封装.我只是不知道这是否接近矫枉过正.

我可以想到我可能想要切换容器的情况.例如,我目前的容器不再维护,或者证明不同的容器更轻,性能更好,更符合我的需要.如果发生这种情况,那么我可能需要进行大量的重新布线.

为了清楚起见,我正在考虑封装类型的注册解决方案.我认为封装解决方案是明智的 - 我希望通常的做法是将helper/util类委托给容器.

编辑:

假设我更喜欢以编程方式为类型安全,编译时检查和可重构性连接我的类型.这是代码和它的,我正在寻找保护自己从容器上的依赖.

我也一直在为其他几个共享很多相同关系的项目使用IoC容器,但容器很难处理,所以我想要改变.但是,更改意味着我失去了注册码的可重用性.因此,为什么我正在考虑封装.这不是一个巨大的负担,但我会喜欢减轻负担.

我期待:

  • 最大限度地减少容器/容器版本更改的影响
  • 在可能使用不同容器的项目中提供某种级别的类型注册一致性
  • 提供对我有意义的接口方法(RegisterSingleton <T,T>而不是RegisterType <T,T>(SomeLifetimeProvider) - 以Unity为例).
  • 随着条件/可伸缩性要求的改变而增加容器,例如在解析/注册期间添加更好的缓存,日志记录等.
  • 提供我自己的模型来注册类型映射.
    • 假设我想在程序集/包中创建一堆RegistrationHandler对象,因此我可以轻松地将注册职责分隔到多个类中,并自动拾取这些处理程序,而无需在其他任何地方更改代码.

我意识到这有点主观,所以优点/缺点可能会有所帮助

谢谢!

encapsulation ioc-container

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

你应该如何使用shared_ptr返回*this?

另见:类似的问题

下面的代码显然很危险.问题是:你如何跟踪*this的引用?

using namespace boost;

// MyClass Definition
class MyClass {

public:
   shared_ptr< OtherClass > createOtherClass() {
      return shared_ptr< OtherClass > OtherClass( this ); // baaad
   }
   MyClass();
   ~MyClass();
};

// OtherClass Definition
class OtherClass {

public:
   OtherClass( const *MyClass myClass );
   ~OtherClass();
};

// Call; pMyClass refcount = 1
shared_ptr< MyClass > pMyClass( new MyClass() );

// Call; pMyClass refcount = 1 => dangerous
pMyClass->createOtherClass();
Run Code Online (Sandbox Code Playgroud)

我有答案(在下面发布),我只想让它在stackoverflow上(如果我错了,每个人都可以纠正我.)

c++ shared-ptr

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