我有兴趣了解Java的高质量,独立源代码格式化程序的可用选择.
该格式必须独立的,也就是说,它必须支持"批量"模式是从任何特定的开发环境脱钩.理想情况下,它也应该独立于任何特定的操作系统.因此,IDE du jour的内置格式化程序在这里没什么意义(除非该IDE支持批处理模式格式化程序调用,可能来自命令行).用封闭源C/C++编写的格式化程序只能在Windows上运行,这并不理想,但有点有趣.
需要说明的是,"格式化程序"(或"美化")与"样式检查程序"不同.格式化程序接受源代码作为输入,应用样式规则,并生成在语义上等效于原始源代码的样式化源代码.语法修改仅限于修改代码布局,如更改空格或组织import语句.如果有的话,很少进行其他重构.样式检查器还应用样式规则,但它只报告规则违规,而不会将修改后的源代码作为输出.所以图片看起来像这样:
Formatter(生成符合样式规则的修改后的源代码)
阅读源代码→应用样式规则→编写样式源代码
样式检查器(不生成修改后的源代码)
阅读源代码→应用样式规则→写入规则违规
进一步澄清
解决方案必须高度可配置.我希望能够指定自己的风格,而不是简单地从预设列表中选择.
另外,我不是在寻找一种用Java编写的通用漂亮打印机,它可以打印很多东西.我想设计Java代码的样式.
我也不一定对许多语言的统一格式化程序感兴趣.我认为对于支持除Java以外的语言的解决方案可能会很好,但这不是必需的.
此外,只有执行的代码高亮工具是正确的 了.
我对网络服务也不感兴趣.我想要一个可以在本地运行的工具.
最后,解决方案不必限于开源,公共领域,共享软件,自由软件,商业或其他任何东西.所有形式的许可均可接受.
我正在讨论Scala样式指南中的多个参数列表.我已经认识到,有两种方式讨好,我想知道用例是什么:
def add(a:Int)(b:Int) = {a + b}
// Works
add(5)(6)
// Doesn't compile
val f = add(5)
// Works
val f = add(5)_
f(10) // yields 15
def add2(a:Int) = { b:Int => a + b }
// Works
add2(5)(6)
// Also works
val f = add2(5)
f(10) // Yields 15
// Doesn't compile
val f = add2(5)_
Run Code Online (Sandbox Code Playgroud)
风格指南错误地暗示这些是相同的,当它们显然不是时.该指南试图说明创建的curried函数,并且,虽然第二种形式不是"by-the-book"currying,但它仍然非常类似于第一种形式(尽管可以说更容易使用,因为你不需要的_)
从那些使用这些形式的人那里,对于何时使用一种形式而不是另一种形式的共识是什么?
我注意到有些人使用以下表示法来声明指针变量.
(a) char* p;
Run Code Online (Sandbox Code Playgroud)
代替
(b) char *p;
Run Code Online (Sandbox Code Playgroud)
我用(b).符号(a)背后的理性是什么?符号(b)对我来说更有意义,因为字符指针本身不是一种类型.相反,类型是字符,变量可以是指向字符的指针.
char* c;
Run Code Online (Sandbox Code Playgroud)
这看起来像char*类型,变量c是该类型.但实际上类型是char和*c(c指向的内存位置)是该类型(char).如果一次声明多个变量,这种区别就变得很明显了.
char* c, *d;
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪.c和d都是指向字符的同一种指针.因为下一个看起来更自然.
char *c, *d;
Run Code Online (Sandbox Code Playgroud)
谢谢.
我从头开始一个新项目,希望它干净/具有良好的编码标准.经验丰富的开发人员会以什么样的顺序在课堂上做出贡献?
答:1)公共方法2)私人方法3)公共变量4)私有变量
B:1)公共变量2)私有变量3)公共方法4)私有方法
C:1)公共变量2)公共方法3)私有方法4)私有变量
我通常喜欢将公共静态变量放在顶部,但是然后会在构造函数之前列出公共静态方法,还是应该首先列出构造函数?诸如此类的事情...
我知道这很有点但我只是想知道:这是什么最好的做法?
PS:不,我不使用Cc#.我知道.我是个luddite.
我看到在Ruby(和动态类型语言,通常)中,一种非常常见的做法是传递散列,而不是声明具体的方法参数.例如,不是使用参数声明一个方法,而是像这样调用它:
def my_method(width, height, show_border)
my_method(400, 50, false)
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
def my_method(options)
my_method({"width" => 400, "height" => 50, "show_border" => false})
Run Code Online (Sandbox Code Playgroud)
我想知道你对它的看法.这是好事还是坏事,我们应该这样做吗?在什么情况下使用这种做法是有效的,它有什么危险的情况?
如何编写PowerShell脚本是否有任何推荐的编码风格?
它不是关于如何构造代码(有多少函数,如果使用模块,......).它是关于" 如何编写代码以使其可读 ".
在编程语言中有一些推荐的编码样式(缩进的内容,如何缩进 - 空格/制表符,在哪里创建新行,在哪里放括号,...),但我还没有看到任何关于PowerShell的建议.
我特别感兴趣的是:
如何写参数
function New-XYZItem
( [string] $ItemName
, [scriptblock] $definition
) { ...
Run Code Online (Sandbox Code Playgroud)
(我看到它更像'V1'语法)
要么
function New-PSClass {
param([string] $ClassName
,[scriptblock] $definition
)...
Run Code Online (Sandbox Code Playgroud)
或(为什么要添加空属性?)
function New-PSClass {
param([Parameter()][string] $ClassName
,[Parameter()][scriptblock] $definition
)...
Run Code Online (Sandbox Code Playgroud)
或(我在Jaykul的代码中看到的其他格式)
function New-PSClass {
param(
[Parameter()]
[string]
$ClassName
,
[Parameter()]
[scriptblock]
$definition
)...
Run Code Online (Sandbox Code Playgroud)
要么 ...?
如何编写复杂的管道
Get-SomeData -param1 abc -param2 xyz | % {
$temp1 = $_
1..100 | % { …Run Code Online (Sandbox Code Playgroud) NetBeans 7.4 beta目前可供公众下载,默认情况下它引入了一个奇怪的警告规则:
方法长度为16行(允许10行)
我的问题是:这是一个公认的代码约定规则,可以在某个地方证明某种程度吗?NetBeans支持/开发人员说它不是一个bug,但是不要说明为什么它们只允许10行,以及这个规则究竟来自何处.
有没有办法获得样式:显示属性哪个没有或阻止?
DIV:
<div id="ctl00_MainContentAreaPlaceHolder_cellPhone_input_msg_container" class="Error cellphone" style="display: block;">
<p class="cellphone" style="display: block;">Text</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我知道有一种方法可以找出DIV是否隐藏但在我的情况下这个div是动态注入的,所以它总是显示为可见的假,因此我不能使用它:
$j('.Error .cellphone').is(':hidden')
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法获得结果"display:block":
$j('div.contextualError.ckgcellphone').attr('style')
Run Code Online (Sandbox Code Playgroud)
有没有办法获得"阻止"或"无"的值,还是有更好/更有效的方法来做到这一点?
我已经搜索了这个,但无法找到答案,无论出于何种原因,我太羞于问教授,因为有数百人盯着你的感觉......
无论如何,我的问题是拥有括号的重要性是什么?如果我省略它们可以吗?例:
for (int i = 0; i < size; i++) {
a += b;
}
Run Code Online (Sandbox Code Playgroud)
VS
for (int i = 0; i < size; i++)
a += b;
Run Code Online (Sandbox Code Playgroud)
我知道它们都可以工作,但是如果我省略括号(我倾向于做很多,由于可见性)会改变什么,什么都没有?正如我所说,我知道它有效,我测试了十几次,但现在我的一些单一任务变得越来越大,并且出于某种原因,我有非理性的恐惧,从长远来看,这是我的原因有些问题吗?有理由害怕吗?
我收到关于我的常量的Pylint错误:( MIN_SOIL_PARTICLE_DENS名称无效).任何想法为什么这个常数是错误的?这是我的全部功能:
def bulk_density(clay, sand, organic_matter):
MIN_SOIL_PARTICLE_DENS = 2.65
x1 = (0.078 + 0.278 * sand + 0.034 * clay + 0.022 * organic_matter - 0.018
* sand * organic_matter - 0.027 * clay * organic_matter - 0.584 * sand
* clay)
x2 = -0.107 + 1.636 * x1
field_capacity = vol_water_content_33_j_kg(clay, sand, organic_matter)#m3/m3
sat_water_content = 0.043 + field_capacity + x2 - 0.097 * sand
return (1 - sat_water_content) * MIN_SOIL_PARTICLE_DENS
Run Code Online (Sandbox Code Playgroud) coding-style ×10
java ×2
oop ×2
attributes ×1
brackets ×1
c ×1
c++ ×1
class-design ×1
conventions ×1
currying ×1
jquery ×1
methods ×1
netbeans ×1
pointers ×1
powershell ×1
pylint ×1
python ×1
ruby ×1
scala ×1