Tag: 与语言无关的

什么时候使用无符号值来签名?

什么时候使用未签名的variables适合于已签名的variables? 那么在for循环呢? 我听到很多关于这个的意见,我想看看是否有什么共识。 for (unsigned int i = 0; i < someThing.length(); i++) { SomeThing var = someThing.at(i); // You get the idea. } 我知道Java没有无符号的值,这一定是Sun Microsystems的一个明智的决定。

Monads与箭头

我对函数式编程中使用的monads和arrow的概念非常熟悉。 我也明白,他们可以用来解决类似的问题。 不过,在任何情况下如何select使用哪一个,我还是有点困惑。 我应该什么时候使用monads,什么时候应该使用箭头?

一个理想的编程键盘布局

我经常听到一些抱怨,那些为了简洁而大量使用符号的编程语言,最值得注意的是C和C ++(我不会去碰APL)很难打字,因为他们需要经常使用shift键。 一两年前,我自己已经厌倦了,下载了微软的键盘布局创build器 ,对我的布局做了一些改变,而且一直没有回头。 速度差异惊人; 有了这几个简单的改变,我就能够以大约30%的速度键入C ++代码,具体取决于它有多毛。 最重要的是,我在普通文本中的打字速度不会受到影响。 我的问题是这样的:编程已经存在的替代键盘布局已经stream行,它们中的任何一个还在现代使用中,您是否亲自使用任何改变的布局,以及如何进一步优化我的布局? 我对标准QWERTY布局做了以下更改。 (我不使用Dvorak ,但有一个程序员Dvorak布局值得一提。) 用顶部行中的符号交换数字 ,因为长或重复的字面数字通常被replace为命名常量; 用波浪replace反引号,因为反引号在许多语言中是罕见的,但是析构函数在C ++中很常见; 交换减去下划线,因为下划线在标识符中是常见的; 用方括号交换花括号,因为块比下标更常见; 和 用单引号交换双引号,因为string比字符文字更常见。 我怀疑这最后可能会是最有争议的,因为它通过要求使用转移键入常见的收缩干扰最多的运行文本。 这种布局显着提高了我在C ++,C,Java和Perl中的打字速度,并在LISP和Python中有所增加。

文件名? path名称? 基地名称? 一个path的命名标准

当我是操纵path和文件名时,我总是让自己陷入困境,因为我没有一个通用的命名系统。 我需要提出一个命名标准并坚持下去,我希望与其他人保持一致和清晰,所以我开放了学习经典的答案。 考虑这个玩具问题:( Windows例子,但希望答案应该是平台独立的) 您已获得文件夹的全名:C:\ users \ OddThinking \ Documents \ My Source。 您想要遍历下面的文件夹,并将所有.src编译为.obj。 在某些时候,你正在看下面的string。 C:\users\OddThinking\Documents\My Source\Widget\foo.src 那么,您将使用哪些标识符名称作为零件? A) foo B) foo.src C) src D) .src E) C:\users\OddThinking\Documents\My Source\ – ie the top of the tree. F) Widget\foo.src – ie the path from the top of the tree to the leaf. G) Widget – ie […]

如何写一个好的README

我想每个人都看过一个README文件,但是我想要一个关于如何编写一个优秀的README文件的README指南,花费最less的精力。 什么是README文件? 我应该写什么? 我应该如何格式化它? 附注 : 作为一个满足“OMG这是一个很好的自述”的例子! 和“OMG这个自述文件是无用的”,我发布了一个链接到gnome-cups-manager的README作为评论。 现在评论被删除可能是由于死链接,所以我把内容复制到这个要点 。

什么是Lambda?

有人能够很好地描述Lambda是什么吗? 我们有一个标签,他们在C#问题的秘密,但我还没有find一个很好的定义和解释,他们是在什么位置。

2angular之间的最小差异

给定在坐标周围的-PI-> PI范围内的两个angular度,它们之间的两个angular度中最小的值是多less? 考虑到PI和-PI之间的差异不是2PI,而是零。 例: 设想一个圆圈,从中心出来有两条线,这两条线之间有两个angular度,它们在内部形成的angular度又称为较小的angular度 ,以及它们在外部形成的angular度,也就是更大的angular度。 两个angular度加起来就成了一个整圆。 考虑到每个angular度可以在一定的范围内, angular度值越小,考虑到侧翻

在红色和绿色之间为功率计生成颜色?

我正在写一个Java游戏,我想实现一个功率计,你有多难拍摄一些东西。 我需要写一个int值在0 – 100之间的函数,根据数字的高低,它会返回一个绿色(功率级别为0)和红色(功率级别为100)之间的颜色。 类似于音量控制的工作方式: 我需要在一个颜色的红色,绿色和蓝色组件上做什么操作来生成绿色和红色之间的颜色? 所以,我可以运行getColor(80) ,它会返回一个橙色的颜色(R,G,B的值)或getColor(10) ,这将返回一个更绿/黄的RGB值。 我知道我需要为R,G,B值增加一个新颜色的成分,但是我不清楚颜色从绿 – 红变成什么颜色。 进展: 我最终使用HSV / HSB色彩空间,因为我更喜欢渐变色(中间没有深褐色)。 我使用的function是: public Color getColor(double power) { double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below) double S = 0.9; // Saturation double B = 0.9; // Brightness return Color.getHSBColor((float)H, (float)S, (float)B); } […]

内存映射文件的优点是什么?

我一直在研究一个项目的内存映射文件,并会感谢来自以前使用过的人的任何想法,或决定不使用它们,为什么? 我特别关心以下几点,重要性如下: 并发 随机访问 性能 使用方便 可移植性

具有最小圈复杂度的条件logging

在阅读完“ 你对圆形复杂性有什么限制? ”之后,我发现很多同事对我们项目的这个新的质量保证政策非常恼火:每个function不会超过十个循环复杂性。 含义:不超过10个“if”,“else”,“try”,“catch”等代码工作stream分支语句。 对。 正如我在“ 你testing私有方法吗? ',这样的政策有很多好的副作用。 但是:在我们(200人 – 7年)的项目开始时,我们愉快地进行了日志logging(不,我们不能轻易将它委托给日志的某种“ 面向方面编程 ”方法)。 myLogger.info("A String"); myLogger.fine("A more complicated String"); … 当我们系统的第一个版本上线时,我们遇到了很大的内存问题,而不是由于日志logging(这是closures的),但是由于总是计算的日志参数 (string),然后传递给'info()'或'fine()'函数,只能发现日志级别为“OFF”,并且没有发生日志logging! 所以QA回来了,并且敦促我们的程序员做条件logging。 总是。 if(myLogger.isLoggable(Level.INFO) { myLogger.info("A String"); if(myLogger.isLoggable(Level.FINE) { myLogger.fine("A more complicated String"); … 但是现在,由于每个函数的限制不能被移动10圈复杂度,他们认为他们放入函数的各种日志被认为是一个负担,因为每个“if(isloggable())”是算作+1圈复杂度! 因此,如果一个函数有8个“if”,“else”等等,在一个紧密耦合的不容易共享的algorithm中,以及3个关键的日志动作……即使条件日志可能不是真的该function的复杂性的一部分… 你将如何处理这种情况? 在我的项目中,我已经看到了一些有趣的编码演变(由于这个“冲突”),但是我只想把你的想法放在第一位。 谢谢你所有的答案。 我必须坚持认为,问题不是“格式化”相关的,而是“论证评估”相关的(评估在做一个什么都不会做的方法之前可能是非常昂贵的) 所以当写上面的“一个string”时,我实际上是指一个函数(),用一个函数()返回一个string,并调用一个复杂的方法来收集和计算logging器显示的所有types的日志数据。或不(因此问题和使用条件日志的义务 ,因此人为地增加“圈复杂性”的实际问题…) 我现在得到你们中的一些人提出的“ 可变函数”的一点(谢谢约翰)。 注意:在java6中的一个快速testing表明,我的varargs函数在被调用之前确实评估了它的参数,所以它不能被应用于函数调用,而是被应用于“日志search器对象”(或者“函数包装器”),其中toString )只会在需要的时候被调用。 得到它了。 现在我已经发表了关于这个话题的经验。 我会把它留在下个星期二投票,然后我会select你的答案之一。 再次,谢谢你的所有build议:)