我意识到,作为一名编程学生,我最大的弱点就是我很难理解其他人的代码.
我对"教科书"代码或明确注释的代码没有任何麻烦,但是当给出几百行的程序,包含十几个不同的函数而没有注释时,我发现它甚至很难开始.
我知道这种类型的代码是我在职业生涯中可能遇到的代码,我认为代码理解能力差对我来说是一个很大的障碍,所以我想专注于提高我的技能在这方面.
哪些工具/技术有助于提高您的体验中的代码理解力?
你如何处理不熟悉的,未注释的代码?为什么?你认为你的技术有用吗?
谢谢
我目前正在撰写正式的研究报告,我将在此报告中包含代码.
问题:是否有可接受的方式在研究报告中显示代码?我在考虑字体,间距等问题,以及代码是应该在文档内部还是在附录中显示.
代码将是JavaScript和PHP.代码的所有部分都不会超过25行(因此它们仅仅是片段).将有大约六个片段.每个片段都有几个段落,解释代码中发生的事情,并讨论其优缺点.
我没有与提交报告的机构联系,也没有关于如何格式化代码的公布指南(请不要质疑这些要点).
你会欣赏以下两种句法糖:
lock(obj)
{
//Code
}
same as:
Monitor.Enter(obj)
try
{
//Code
}
finally
{
Monitor.Exit(obj)
}
Run Code Online (Sandbox Code Playgroud)
和
using(var adapt = new adapter()){
//Code2
}
same as:
var adapt= new adapter()
try{
//Code2
}
finally{
adapt.Dispose()
}
Run Code Online (Sandbox Code Playgroud)
显然,每种情况下的第一个例子都更具可读性.有没有办法自己定义这种东西,无论是在C#语言中,还是在IDE中?我问的原因是,有很多类似的用法(长篇)可以从中受益,例如.如果您正在使用ReaderWriterLockSlim,那么您需要一些非常相似的东西.
编辑1:
我被要求提供一个例子,所以我会试一试:
myclass
{
ReaderWriterLockSlim rwl = new ReaderWriterLockSlim();
void MyConcurrentMethod()
{
rwl.EnterReadLock();
try{
//Code to do in the lock, often just one line, but now its turned into 8!
}
finally
{
rwl.ExitReadLock();
}
}
}
//I'd rather have:
void MyConcurrentMethod()
{ …
Run Code Online (Sandbox Code Playgroud) int uploadsID;
int pageNumber;
int x;
int y;
int w;
int h;
bool isValidUploadID = int.TryParse(context.Request.QueryString["uploadID"], out uploadsID);
bool isValidPage = int.TryParse(context.Request.QueryString["page"], out pageNumber);
bool isValidX = int.TryParse(context.Request.QueryString["x"], out x);
bool isValidY = int.TryParse(context.Request.QueryString["y"], out y);
bool isValidW = int.TryParse(context.Request.QueryString["w"], out w);
bool isValidH = int.TryParse(context.Request.QueryString["h"], out h);
if (isValidUploadID && isValidPage && isValidX && isValidY & isValidW & isValidH)
{
Run Code Online (Sandbox Code Playgroud)
这是一个ajax处理程序,检查所有传递的参数是否正常.这被认为是坏的,是否有更好的方法来写这个,或者它不是那么重要?
我想知道是否有办法以更紧凑的方式执行以下操作:
if (text == "Text1" or text=="Text2" or text=="Text3" or text=="Text4"):
do_something()
Run Code Online (Sandbox Code Playgroud)
问题是我在if语句中只有4个比较,它开始看起来很长,模糊和丑陋.有任何想法吗?
假设我想打印5行.哪种方法最佳(性能和可读性).
System.out.println();
System.out.println();
System.out.println();
System.out.println();
System.out.println();
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println("\n\n\n\n");
Run Code Online (Sandbox Code Playgroud)
这是一个偏好的问题还是比另一个更好的问题.看起来使用第二种方法可以节省大量时间.
我是clojure的新手,我正在努力解决的主要问题是编写可读代码.我经常最终得到如下所示的功能.
(fn rep
([lst n]
(rep (rest lst)
n
(take n
(repeat (first lst)))))
([lst n out]
(if
(empty? lst)
out
(rep
(rest lst) n
(concat out (take n
(repeat
(first lst))))))))
Run Code Online (Sandbox Code Playgroud)
有很多端括号的构建.有哪些方法可以减少这种情况或将其格式化,以便更容易找到丢失的括号?
您不需要在Java中编写"this"关键字.但无论如何这样做会更好吗?将你的风格同质化是否有意义,即如果你使用"this"一次,你每次使用它时都会使用它?或者有一个地方,你总是会使用它和其他你从未使用它的地方?
我想知道是否有一种内置的方式来输出可读文件大小与Twig模板系统.说我的模板中有这样的东西:
<p>This limit is currently set to {{ maxBytes }}</p>
Run Code Online (Sandbox Code Playgroud)
我怎么格式化maxBytes
显示像30 GB
?
我正在写一个Perl正则表达式来匹配字符串x bla
和[x] bla
.一种选择是/(?:x|\[x\]) bla/
.这是不可取的,因为在现实世界中,x
更复杂,所以我想避免重复它.
到目前为止,最好的解决方案是x
输入变量并预编译正则表达式:
my $x = 'x';
my $re = qr/(?:$x|\[$x\]) bla/o;
Run Code Online (Sandbox Code Playgroud)
有更整洁的解决方案吗?在这种情况下,可读性比性能更重要.
readability ×10
coding-style ×3
c# ×2
java ×2
.net ×1
asp.net ×1
clojure ×1
comparison ×1
filesize ×1
lisp ×1
newline ×1
performance ×1
perl ×1
python ×1
regex ×1
report ×1
this ×1
twig ×1