ISO C委员会(ISO/IEC JTC1/SC21/WG14)已发布TR 24731-1,正在研究TR 24731-2:
TR 24731-1:C库的扩展第一部分:边界检查接口
WG14正在研究更安全的C库函数.该TR旨在通过添加具有缓冲区长度的额外参数来修改现有程序.最新草案见N1225号文件.理由是在N1173号文件中.这将成为技术报告类型2.
TR 24731-2:C库的扩展 - 第二部分:动态分配功能
WG14正在研究更安全的C库函数.该TR面向使用动态分配而不是缓冲区长度的额外参数的新程序.最新草案见N1337号文件.这将成为技术报告类型2.
在C#中,使用System.Object代码而不仅仅是object,或者System.String不是string等等有什么区别?或者只是风格问题?
是否有理由说一种形式对另一种形式更有利?
假设我有一个来自表的列值的列表,如何删除空字符串和重复值.请参阅以下代码:
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
Run Code Online (Sandbox Code Playgroud)
这就是我刚刚编写的内容,但是Amiram的代码更优雅,所以我会选择答案就是这样做:
DataTable dtReportsList = someclass.GetReportsList();
if (dtReportsList.Rows.Count > 0)
{
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
dtList.RemoveAll(x=>x == "");
dtList = dtList.Distinct().ToList();
rcboModule.DataSource = dtList;
rcboModule.DataBind();
rcboModule.Items.Insert(0, new RadComboBoxItem("All", "All"));
}
Run Code Online (Sandbox Code Playgroud) 我知道PC-Lint可以告诉你包含但未使用的标题.有没有其他工具可以做到这一点,最好是在Linux上?
我们拥有一个庞大的代码库,在过去的15年中已经看到了大量的功能,但是当功能从一个实现文件移动到另一个实现文件时,很少会删除剩余的#include指令,这一点让我们陷入了相当糟糕的状态.显然我可以去除所有#include指令并让编译器告诉我哪些重新包含,但是我宁愿反过来解决问题 - 找到未使用的指令 - 而不是重建已使用的指令列表.
每当我在方法中有局部变量时,ReSharper建议将它们转换为常量:
// instead of this:
var s = "some string";
var flags = BindingFlags.Public | BindingFlags.Instance;
// ReSharper suggest to use this:
const string s = "some string";
const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
Run Code Online (Sandbox Code Playgroud)
鉴于这些是真正的常量值(而不是变量)我理解ReSharper建议将它们更改为const.
但除此之外,使用const(例如更好的性能)是否有任何其他优势可以证明使用const BindingFlags而不是方便可读的var关键字?
BTW:我刚刚在这里发现了一个类似的问题:Resharper总是建议我创建const字符串而不是字符串,但我认为它更多的是关于类的字段,我的问题是关于局部变量/ consts.
在阅读D3.js的来源时,我看到了x >= x模式.如果它是用于检测数字中的NaN,为什么不只是isNaN(x)或x == x?
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n) if ((b = array[i]) != null && b >= b) {
a = b;
break;
}
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n) if ((b = f.call(array, …Run Code Online (Sandbox Code Playgroud) 缩进SQL语句的公认惯例是什么?例如,请考虑以下SQL语句:
SELECT column1, column2
FROM table1
WHERE column3 IN
(
SELECT TOP(1) column4
FROM table2
INNER JOIN table3
ON table2.column1 = table3.column1
)
Run Code Online (Sandbox Code Playgroud)
这应该如何缩进?非常感谢.
如果你有一个类接受一些参数但是不允许这些参数,那么最佳实践是null什么?
以下是显而易见的,但例外有点不明确:
public class SomeClass
{
public SomeClass(Object one, Object two)
{
if (one == null || two == null)
{
throw new IllegalArgumentException("Parameters can't be null");
}
//...
}
}
Run Code Online (Sandbox Code Playgroud)
这里的异常让你知道哪个参数为null,但构造函数现在非常难看:
public class SomeClass
{
public SomeClass(Object one, Object two)
{
if (one == null)
{
throw new IllegalArgumentException("one can't be null");
}
if (two == null)
{
throw new IllegalArgumentException("two can't be null");
}
//...
}
Run Code Online (Sandbox Code Playgroud)
这里构造函数更整洁,但现在构造函数代码实际上不在构造函数中:
public class SomeClass
{
public SomeClass(Object one, Object two) …Run Code Online (Sandbox Code Playgroud) 我在jQuery中看到了许多创建元素的不同样式(以及几种不同的方法).我很好奇建立它们的最清晰的方法,并且如果任何特定方法因任何原因客观上比另一方法更好.以下是我见过的风格和方法的一些例子.
var title = "Title";
var content = "Lorem ipsum";
// escaping endlines for a multi-line string
// (aligning the slashes is marginally prettier but can add a lot of whitespace)
var $element1 = $("\
<div><h1>" + title + "</h1>\
<div class='content'> \
" + content + " \
</div> \
</div> \
");
// all in one
// obviously deficient
var $element2 = $("<div><h1>" + title + "</h1><div class='content'>" + content + "</div></div>");
// broken …Run Code Online (Sandbox Code Playgroud) this在Java中使用关键字的最佳做法是什么?例如,我有以下类:
class Foo {
Bar bar;
public Foo(Bar bar) {
this.bar = bar;
}
}
Run Code Online (Sandbox Code Playgroud)
这很好,但是如果我将构造函数中的语句更改为,Java就足够聪明地知道发生了什么
bar = bar;
Run Code Online (Sandbox Code Playgroud)
那么为什么要使用this关键字?(我知道在某些情况下,使用它是完全必要的,我只是要求这样的情况).实际上,我倾向于纯粹为了可读性而使用关键字,但通常的做法是什么?例如,在整个商店中使用它会使我的代码看起来有些混乱
boolean baz;
int someIndex = 5;
this.baz = this.bar.getSomeNumber() == this.someBarArray[this.someIndex].getSomeNumber();
Run Code Online (Sandbox Code Playgroud)
显然是一个糟糕的代码,但它说明了我的例子.在这些情况下,这仅仅取决于个人偏好吗?
coding-style ×10
c# ×3
java ×2
javascript ×2
c ×1
c++ ×1
const ×1
constructor ×1
d3.js ×1
element ×1
header-files ×1
indentation ×1
jquery ×1
linq ×1
nan ×1
null ×1
resharper ×1
security ×1
sql ×1
this ×1
tr24731 ×1