coding-style相关内容

在 Java 中,变量应该在函数顶部声明,还是在需要时声明?

我正在为那些通过在顶部声明所有变量并将它们初始化为 null/0/whatever 来启动其函数的人清理 Java 代码,而不是在以后需要时声明它们. 这方面的具体指导方针是什么?是否有针对一种或另一种方式的优化原因,或者一种方式只是一种好的做法?在任何情况下,偏离正确的做法都是可以接受的吗? 解决方案 在尽可能靠近您使用它们的第一个位置声明变量.这与效率没有任何关系,但会使您的代码 ..
发布时间:2021-12-13 21:33:46 Java开发

有没有更好的写法 v = (v == 0 ? 1 : 0);

我想在 0 和 1 之间切换一个变量.如果它是 0,我想把它设置为 1,否则如果它是 1,我想把它设置为 0. 这是一个如此基本的操作,我经常写,我想研究一下最短、最清晰的方法.这是我目前最好的: v = (v == 0 ? 1 : 0); 你能改进吗? 编辑:问题是问如何在保持清晰度的同时用最少的字符写出上述语句 - 这怎么能“不是一个真正的问题"?这并非旨在成为高尔夫代码练习, ..
发布时间:2021-12-13 21:11:59 前端开发

C++ 标准实践:虚拟接口类与模板

我必须就泛化与多态性做出决定. 这个场景是标准的:我想让我的整体相互依赖代码更加模块化、干净和可扩展.还处于可以改变设计原则的阶段,而且,在我看来,非常可取. 我会引入纯虚拟基类(接口)还是模板? 我了解有关模板选项的基础知识:更少的间接性,更好的性能,更多的编译但没有后期绑定等. stl 没有使用太多(或没有?)继承,boost 也没有.但我认为这些旨在成为每个人都使用的 ..
发布时间:2021-12-13 19:06:56 C/C++开发

C中的三重指针:这是风格问题吗?

我觉得 C 中的三重指针被视为“坏".对我来说,有时使用它们是有意义的. 从基础开始,单指针有两个用途:创建数组,以及允许函数更改其内容(通过引用传递): char *a;a = malloc... 或 void foo (char *c);//意味着我要修改foo中的参数.{ *c = 'f';}字符一个;foo(&a); 双指针可以是一个二维数组(或数组的数组,因为每个“列"或“ ..
发布时间:2021-12-13 13:24:50 其他开发

在 C/C++ 中声明指针变量的正确方法

我注意到有些人使用以下符号来声明指针变量. (a) char* p; 代替 (b) char *p; 我使用 (b).符号(a)背后的理性是什么?符号 (b) 对我来说更有意义,因为字符指针本身不是一种类型.相反,类型是字符,变量可能是指向字符的指针. char* c; 这看起来像是 char* 类型,而变量 c 就是这种类型.但实际上类型是char,而*c(c指向的内存位置)是那种类 ..
发布时间:2021-12-13 12:51:16 C/C++开发

Java/Swing GUI 最佳实践(从代码角度)

与本维基相比,我正在寻找合适的从编码的角度实现 Swing GUI 控件的方法. 我一直在寻求学习 Java 及其 GUI 工具,但我发现一个接一个的互联网教程将所有内容都放在 main 中,我知道这是不对的. 我也尝试过 RAD 系统,如 Netbeans 和其他“可视化"编辑器,但是当我开始编码时,我有一大堆代码,我不知道它的一半功能,所以我打算学习手工编写代码摇摆,我知道基本的控 ..
发布时间:2021-12-13 11:13:35 Java开发

在 C/C++ 中检查空指针

在最近的代码审查中,一位贡献者试图强制以下列方式对指针执行所有 NULL 检查: int * some_ptr;//...如果(some_ptr == NULL){//处理空指针错误}别的{//继续} 代替 int * some_ptr;//...如果(some_ptr){//继续}别的{//处理空指针错误} 我同意他的方式更清楚一点,因为它明确表示“确保此指针不为 NULL",但我会反驳 ..
发布时间:2021-12-12 13:15:43 C/C++开发

在“if"语句中设置多行条件样式?

有时我将 ifs 中的长条件分成几行.最明显的方法是: if (cond1 == 'val1' and cond2 == 'val2' andcond3 == 'val3' 和 cond4 == 'val4'):做一点事 在视觉上不是很吸引人,因为动作与条件融合在一起.然而,这是使用正确的 4 个空格缩进的自然方式. 目前我正在使用: if ( cond1 == 'val1' an ..
发布时间:2021-12-12 13:08:56 Python

使用没有花括号的 if 语句是一种不好的做法吗?

我见过这样的代码: if(语句)做这个;别的做这个; 但是,我认为这更具可读性: if(语句){做这个;}别的{做这个;} 既然这两种方法都有效,那么这只是使用哪种方法的偏好问题还是推荐一种方法而不是另一种方法? 解决方案 第一个版本的问题是,如果您返回并在 if 或 else 子句中添加第二个语句,而没有记得添加花括号,您的代码会以意想不到且有趣的方式中断. 在可维护性方面 ..
发布时间:2021-12-12 13:06:36 其他开发

吸气剂和吸气剂?

我不是 PHP 开发人员,所以我想知道在 PHP 中使用显式 getter/setter 是否更流行,以纯 OOP 风格,带有私有字段(我喜欢的方式): class MyClass {私人 $firstField;私人 $secondField;公共函数 getFirstField() {返回 $this->firstField;}公共函数 setFirstField($x) {$this->f ..
发布时间:2021-12-11 23:38:42 PHP

pythonic方法在没有索引变量的情况下做N次?

我每天都越来越喜欢python. 今天,我正在编写一些代码,例如: for i in xrange(N):做一点事() 我不得不做 N 次某事.但是每次都不依赖于i(索引变量)的值.我意识到我正在创建一个我从未使用过的变量 (i),我想“肯定有一种更 Pythonic 的方法可以做到这一点,而无需那个无用的索引变量." 所以……问题是:你知道如何以更(pythonic)漂亮的方式 ..
发布时间:2021-12-11 12:36:47 Python

使用“for"循环遍历 C++ 向量

我是 C++ 语言的新手.我已经开始使用向量,并注意到在我看到的所有通过索引迭代向量的代码中,for 循环的第一个参数总是基于向量的东西.在 Java 中,我可能会用 ArrayList 做这样的事情: for(int i=0; i 有什么原因我在 C++ 中看不到这个吗?这是不好的做法吗? 解决方案 有什么原因我在 C++ 中看不到这个吗?这是不好的做法吗? 没有.这不是 ..
发布时间:2021-12-11 12:27:59 C/C++开发

为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

在流套接字上发送数据的标准方法一直是调用 send 并写入一大块数据,检查返回值以查看是否所有数据都已发送,然后再次调用 send 直到整个消息都已发送接受. 例如,这是一个常见方案的简单示例: int send_all(int sock, unsigned char *buffer, int len) {意图;而(长度> 0){nsent = send(sock, buffer, len ..
发布时间:2021-12-11 11:19:06 其他开发

什么是间接宾语符号,为什么不好,以及如何避免它?

标题几乎概括了它,但无论如何这里是长版本. 在发布一小段 perl 代码后,有人告诉我避免使用间接对象表示法,“因为它有几个副作用".评论引用了这一行: my $some_object = new Some::Module(FIELD => 'value'); 因为我一直都是这样做的,所以为了与时俱进,我问: 这有什么不好?(具体) 潜在的(可能是负面的)副作用是什么? 该行应 ..
发布时间:2021-12-10 18:37:06 其他开发

我应该如何大写 Perl?

PERL?珀尔?珀尔?什么风格好? 我知道答案——我只是想确保问题就在那里,并且提问者知道有一个正确的形式. 解决方案 正确的大小写是语言的“Perl"和可执行文件的“perl".使用“PERL"会将您标记为对该语言或社区不是特别熟悉的人. 另见"perl" 和 "Perl" 有什么区别? perlfaq1. ..
发布时间:2021-12-10 18:34:45 其他开发

你更喜欢“if (var)"吗?或“if (var != 0)"?

几十年来,我一直在使用 C 派生语言进行编程.沿着这条线的某个地方,我决定不再想写: if (var)//在 C 中if ($var) # 在 Perl 中 当我的意思是: if (var != 0)如果(定义 $var 和 $var ne '') 我认为部分原因是我有一个强类型的大脑,在我看来,“如果"需要一个布尔表达式. 或者可能是因为我使用 Perl 太多,而 Perl 中的真 ..
发布时间:2021-12-10 18:20:15 其他开发

style.display='none' 不适用于 chrome 中的选项标签,但它适用于 Firefox

好的,下面是一些演示问题的示例代码.如果我单击 Firefox 中的按钮,第一个选项就会消失.如果我单击 chrome 中的按钮,没有任何反应,或者更确切地说,如果我检查第一个选项,它确实具有属性“style='display:none'",但 html 页面上的选项本身并未隐藏. 123 ..
发布时间:2021-12-10 14:40:14 前端开发