草庐IT

坏主意

全部标签

android - 在 MVP 模式中,了解 Activity/上下文的演示者是不是一个坏主意?

我已经用MVP模式玩了几个星期了,现在我已经到了需要上下文来启动service和访问SharedPreferences.我读过MVP的目的是将View与逻辑分离,并且在Presenter中包含context可能会破坏该目的(如果我'我错了)。目前,我有一个如下所示的LoginActivity:LoginActivity.javapublicclassLoginActivityextendsActivityimplementsILoginView{privatefinalStringLOG_TAG="LOGIN_ACTIVITY";@InjectILoginPresentermPrese

c++ - C 回调中的 try{ } catch(...) { } - 坏主意?

我正在用C++实现回调,它将从普通C代码中调用。我的main()函数已经是C++,但C代码将负责创建最终会调用我的回调的线程。现在我的回调看起来像inthandle_foo(void*userdata){try{MyCPPClass*obj=static_cast(userdata);obj->doStuff();return0;//noerror}catch(...){LogError("doStufffailed");return-1;//error}}这工作正常,但对我来说似乎很奇怪。此外,我失去了一些有用的功能,例如找出what被抛出的能力(无需为我的每个回调添加大量额外的ca

c++ - g++ - 使用 "-g"标志进行生产是一个好主意吗?

只是为了提供一些上下文,我在这里谈论的是使用g++编译C++代码。我可以看到在生产构建中包含-g标志将如何方便维护:如果程序意外崩溃,调试起来会容易得多。我的问题是,包含-g标志是否会以任何其他方式影响输出可执行文件,而不是增加其大小?它能否以某种方式使代码变慢(例如通过关闭某些优化)?据我了解,它不应该(文档只提到包含调试符号),但我不确定。 最佳答案 -g标志不影响代码生成,仅更改符号表和调试元数据。这些并不存在于可执行代码部分,因此当代码在hte调试器之外运行时,它们甚至不会影响性能。

c++ - 减少 cpp 翻译单元的数量是个好主意吗?

我发现如果有很多类,当我为每个类使用一个*.h和一个*.cpp文件时,编译时间会显着增加。我已经使用了预编译的头文件和增量链接,但是编译时间仍然很长(是的,我使用了boost;)于是我想出了以下技巧:将*.cpp文件定义为不可编译将*.cxx文件定义为可编译为每个应用添加了一个*.cxx文件模块,并在其中#include了该模块的所有*.cpp文件。所以我最终只得到了8个翻译单元,而不是100多个翻译单元。编译时间缩短了4-5倍。缺点是您必须手动包含所有*.cpp文件(但这并不是真正的维护噩梦,因为如果您忘记包含链接器会提醒您的内容),并且某些VSIDE便利性无法使用这个方案,例如转到

c++ - 什么时候在其他std::thread机制上使用std::promise是个好主意?

我正在尝试建立一些启发式方法,以帮助我确定要使用的适当std::thread类。据我了解,从最高级别(使用最简单,但最不灵活)到最低级别,我们有:std::asyncwith/std::future(std::shared_future)(当您想一次性使用生产者线程异步执行时)std::packaged_task(当您想分配生产者,但将调用推迟到线程时)std::promise(???)我认为我在前两个何时使用时对有一定的了解,但是对于std::promise仍然不清楚。std::future和std::async调用有效地将产生的回调/functor/lambda转换为异步调用(根据

c++ - 在这种情况下使用多个条件运算符是个好主意吗?

我刚刚在Wikipedia上看到了这段代码关于条件运算符的文章:Vehiclenew_vehicle=arg=='B'?bus:arg=='A'?airplane:arg=='T'?train:arg=='C'?car:arg=='H'?horse:feet;我对代码做了一点改动,但想法是一样的。你觉得这种条件运算符的用法可以接受吗?它比if-else结构要简洁得多,并且使用switch肯定会为bug带来一系列全新的机会(任何人都失败了?)。此外,if-elses和switch不能用作R值,因此您必须先创建变量,初始化它,然后根据需要分配。我真的很喜欢这个,但我想知道其他人的想法。但格

git - 如果它们密切相关,将单独的项目保存在同一个存储库中是一个好主意吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭3年前。Improvethisquestion我正处于Web应用程序的早期阶段,该应用程序将包含一个部署到客户端浏览器的客户端JavaScript应用程序和一个驻留在我的服务器上的服务器端REST类型API。两者将使用Ajax和JSON数据进行通信。现在是这样的;它们是完全分开开发的,甚至不共享一行代码或一种资源。两者都是Node.js应用程序。服务端使用express和sequelize处理所有服务端的东西,客户端使用带手写笔和Co

python - 用 Python 编写守护进程是个好主意吗?

我必须编写一个在后台持续运行并执行一些简单任务的守护程序。逻辑一点都不复杂,但是它必须运行很长时间并且稳定。我认为C++将是编写此类应用程序的不错选择,但我也在考虑使用Python,因为它更容易在其中快速编写和测试某些内容。我在使用Python时遇到的问题是我不确定它的运行时环境在很长一段时间内会如何表现。它会因为一些GC怪癖而吃掉越来越多的内存吗?会不会意外崩溃?我以前从未在Python中编写过守护程序,所以如果有人在这里写过,请分享你的经验。谢谢! 最佳答案 我为我的上一家公司用Python编写了许多守护程序。简短的回答是,它工

python - 在 Python 中为函数组合提供语法糖是个好主意吗?

前段时间我查看了Haskell文档,发现它的功能组合运算符非常好。所以我实现了这个小装饰器:fromfunctoolsimportpartialclass_compfunc(partial):def__lshift__(self,y):f=lambda*args,**kwargs:self.func(y(*args,**kwargs))return_compfunc(f)def__rshift__(self,y):f=lambda*args,**kwargs:y(self.func(*args,**kwargs))return_compfunc(f)defcomposable(f):r

python - 使就地操作返回对象是一个坏主意吗?

我在这里主要谈论的是Python,但我想这可能适用于大多数语言。如果我有一个可变对象,那么让就地操作也返回该对象是个坏主意吗?似乎大多数示例只是修改对象并返回None。例如,list.sort。 最佳答案 是的,这是个坏主意。原因是如果就地和非就地操作具有明显相同的输出,那么程序员会经常混淆就地操作和非就地操作(List.sort()与sorted())相比,这会导致难以检测的错误。返回自身的就地操作可以让您执行“方法链接”,但是,这是一种不好的做法,因为您可能会不小心将具有副作用的函数埋在链的中间。为了防止这样的错误,方法链应该只