草庐IT

android - 在 Android 中使用 Serializable 不好吗?

我已经阅读了很多赞美Parcelable的速度优于Serializable的帖子和文章。我已经使用了一段时间来通过Intents在Activity之间传递数据,并且在两者之间切换时还没有注意到任何速度差异。我必须传输的典型数据量是5到15个嵌套对象,每个对象包含2到5个字段。由于我有大约30个必须可转移的类,因此实现Parcelable需要大量样板代码,这会增加维护时间。我目前的要求之一也是编译后的代码应该尽可能小;我希望我可以通过使用Serializable而不是Parcelable来节省一些空间。我应该使用Parcelable还是没有理由在Serializable上使用它来处理如此

C# List<T>.ToArray 性能不好?

我正在使用.Net3.5(C#),我听说过C#List.ToArray的性能是“坏的”,因为它对所有元素进行内存复制以形成一个新数组。这是真的吗? 最佳答案 不,那不是真的。性能很好,因为它所做的只是在内存中复制所有元素(*)以形成一个新数组。当然,这取决于您对“好”或“差”性能的定义。(*)引用类型的引用,值类型的值。编辑针对您的评论,使用Reflector是检查实现的好方法(见下文)。或者只是想一想你将如何实现它,并相信微软的工程师不会想出更糟糕的解决方案。publicT[]ToArray(){T[]destinationArr

c++ - 按类型命名变量是一种不好的做法吗?

我正在使用STL和boost也使用的下划线命名风格(与驼峰式命名风格相反)对C++进行编程。但是,由于类型和变量/函数都命名为小写,因此如下声明成员变量会导致编译器错误(或至少是麻烦):positionposition;一个名为position的成员变量,其类型为position。我不知道怎么命名它:它通常是一个位置,但它也是对象的位置。在Camel的情况下,编译器会很好:Positionposition;但在C++中它会导致问题。因此,我不想切换到驼峰式大小写、使用匈牙利符号或添加尾随下划线,所以我想知道:将成员命名为类型是否是一种好习惯?在C中,为此使用神秘的单字母变量是很常见的:

c++ - srand(time(NULL)) 不好吗?

在rand()consideredharmful有人指出srand(time(NULL))不好,因为srand需要一个unsignedint,但是对于微软的编译器来说,time_t默认为64位数字,因此会发生缩小转换。但是,time_t是实现定义的。既然我看到srand(time(NULL))如此流行(甚至在这个网站上),是否应该劝阻它? 最佳答案 SinceIseesrand(time(NULL))soprevalent(evenonthissite),shoulditbediscouraged?这取决于您希望如何使用生成器的输出

c++ - 总是在 lambda 表达式中捕获所有内容是一种不好的做法吗?

这个问题在这里已经有了答案:Doc++11lambdascapturevariablestheydon'tuse?(2个回答)关闭9年前。std::functionvoidf1(){inta,b,c,d,...,x,y,z;return[=]{returna+b+c;};}对比std::functionvoidf2(){inta,b,c,d,...,x,y,z;return[a,b,c]{returna+b+c;};}不用说,前者比后者更短、更方便、更优雅。不过,我还是担心:从性能的角度来看,后者总是比前者更好吗?标准是否保证lambda表达式仅捕获必要的变量?即在前一个例子中,只捕获

c++ - 断言总是不好的吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭8年前。Improvethisquestion我曾经在一家公司工作,其中一些首席架构师/开发人员在各种项目中强制要求不得使用断言,并且通常会从代码中删除它们并用异常替换它们。我觉得它们对于编写正确的代码非常重要。任何人都可以建议如何证明这样的授权是合理的吗?如果是这样,断言有什么问题? 最佳答案 根据JaredPar的评论,我们使用了修改后的assert版本,其作用类似于契约(Co

c++ - 在 float 不好的样式上使用增量(运算符++)吗?

在float上使用增量运算符(++)是否被认为是“不好的风格”?它编译得很好,但我觉得它很臭而且违反直觉。问题:在什么情况下,在浮点变量上使用++是合理的并且比+=1.0f更好?如果没有用例,是否有受人尊敬的C++风格指南明确指出++onfloat是邪恶的?对于float++,不会以最小的可能值递增,而是以1.0递增。1.0f没有特殊含义(与整数1不同)。这可能会使读者感到困惑,导致他认为变量是int。对于float,不能保证operator++会更改参数。例如下面的循环不是无限的:floati,j;for(i=0.0,j=1.0;i!=j;i=j++);因此在--之后立即执行++并不

javascript - JavaScript 中的原型(prototype)不好吗?

在Felix'sNode.jsStyleGuide它说:Donotextendtheprototypesofanyobjects,especiallynativeones.Thereisaspecialplaceinhellwaitingforyouifyoudon'tobeythisrule.Thisarticle也让我质疑原型(prototype)的用途。如果您稍后要在代码中添加方法,为什么不直接在原始构造函数中添加呢?那么,什么时候需要扩展对象的原型(prototype)? 最佳答案 不,原型(prototype)还不错。恰恰

python - threadlocals 有什么不好

Django世界中的每个人似乎都讨厌线程本地化(http://code.djangoproject.com/ticket/4280,http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser)。我阅读了Armin关于此的文章(http://lucumr.pocoo.org/2006/7/10/why-i-cant-stand-threadlocal-and-others),但其中大部分取决于threadlocals是不好的,因为它不优雅。我有一个场景,theadlocals将使事情变得更容易。(我有一个应用程序,人们将拥

java - 在 ExecutorService 上调度的守护线程;解释为什么这是不好的形式

我对在使用ExectuorService调度的线程上有序关闭的想法感到满意;也就是说,调用shutdown或shutdownNow会导致池上创建的线程优雅退出。如果他们响应interrupt你可以确定finallyetc将被调用并且你会得到一个干净的、可预测的退出(你可以清理任何资源等)。但是,如果您已将线程设置为守护进程(通过执行程序的ThreadFactory),如下所示。ExecutorServicepool=Executors.newSingleThreadExecutor(newThreadFactory(){@OverridepublicThreadnewThread(Ru