我有一个使用冻结数据的对象:
sub frozen_data {
my $self = shift;
$Data::Dumper::Indent = 0;
$Data::Dumper::Terse = 1;
return Data::Dumper->Dump( [ $self->{_DATA}, ] );
}
Run Code Online (Sandbox Code Playgroud)
和相应的解冻:
sub thaw_data {
my ($self) = @_;
$self->{_DATA} = eval $self->{DATA};
}
Run Code Online (Sandbox Code Playgroud)
这似乎运作良好,有任何问题吗?我也试过通过perlcritic来运行它,我得到了这个:
Expression form of "eval" at line 69, column 22. See page 161 of PBP. (Severity: 5)
Run Code Online (Sandbox Code Playgroud)
写这个的更好的方法是什么?
作为PCI-DSS审计的一部分,我们正在研究如何改进安全领域的编码标准,以确保所有开发人员都了解这一领域的重要性.
您如何在组织内处理此主题?
另外,我们在.NET 3.5中编写面向公众的Web应用程序,接受信用卡/借记卡付款.
如果你使用ColdFusion,你可能已经习惯了换行或水平滚动.不常见,这并不是那么糟糕,但是当现有代码库中的四行中有三行被包装时,有时两次,这就成了一个巨大的可读性障碍.
像......这样的一条线
<cffunction name="v_multiple_item" access="public" output="false" returntype="query">
Run Code Online (Sandbox Code Playgroud)
很容易被HTML分解成
<cffunction name = "v_multiple_item"
access = "public"
output = "false"
returntype = "query"
>
Run Code Online (Sandbox Code Playgroud)
在良好的编辑器中使用宏自动化相当容易.我更关心的是穿插ColdFusion和HTML,如下所示:
<cffunction..>
<cfif..>
<cfif..>
<form..>
<div..>
<table..>
<tr..>
<td..>
<cfif..>
<select..>
<cfoutput>
<option>#stuff#</option>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我看到在空白区域内换行的8-sp选项卡的代码行并不少见.
减少标签宽度还不够.代码库太大,无法重写/框架化.左倾齐射一切?
是否有一个简单的,成功的策略,可以将线宽减小到可管理的水平,而不会进一步损害可读性?
您对使用应用语义使用#region折叠而不是折叠"语法"有什么看法?
例如:
#region Application Loop
#region User Management
#region This Kinf of stuffs
Run Code Online (Sandbox Code Playgroud)
代替
#region Private Routines
#region Public Properties
#region ThisRoutine // (Yes, I've seen this also!)
Run Code Online (Sandbox Code Playgroud)
在这个逻辑中,我开始折叠甚至常规的身体.我开始喜欢#region指令(甚至在使用C++时使用#pragma区域!).
我读了这样一些智慧:
建议程序员在使用by-reference变量时要小心,因为它们会对代码的可读性和可维护性产生负面影响.
我自己创建解决方案,例如在每个引用变量中给出后缀,例如_ref.所以,如果我有一个名为$ files_in_root的变量,那么我将添加后缀并将其名称更改为$ files_in_root_ref.据我所知,这是一个很好的解决方案.
所以,问题来了
我希望PHP编码器世界对第一个问题有不成文的攻击,因为它有助于发现任何源代码的模式.
我是Haskell的新手,我想要一些关于改进这个脚本的意见.这是一个代码生成器,需要一个命令行参数来生成sql脚本.
./GenCode "people name:string age:integer"
Run Code Online (Sandbox Code Playgroud)
码:
import Data.List
import System.Environment (getArgs)
create_table :: String -> String
create_table str = "CREATE TABLE " ++ h (words str)
where h (x:xs) = let cab = x
final = xs
in x ++ "( " ++ create_fields xs ++ ")"
create_fields (x:xs) = takeWhile (/=':') x ++ type x ++ sig
where sig | length xs > 0 = "," ++ create_fields xs
| otherwise = " " ++ create_fields xs
create_fields [] …Run Code Online (Sandbox Code Playgroud) 最近我发现自己编写了许多方法,我只能想到调用脚手架.这是一个例子:
public static void printArray (String[] array, boolean bug)
{
for (int i = 0; i<array.lenght; i++)
{
if (bug) System.out.print (i) ; //this line is what i'm calling the debugging scaffolding i guess.
System.out.println(array[i]) ;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种方法中,如果我将bug设置为true,无论从某种用户输入调用它,我都会得到特殊的调试文本,让我知道打印的字符串是什么索引,以防万一我需要知道为了我的调试(假装事态存在,它的帮助).
我的所有问题或多或少都归结为这个问题:这是一个好主意吗?但有点客观性:
这是测试我的方法并调试它们的有效方法吗?我的意思是在效率方面有效,而不是弄乱我的代码.
if
(bug) stuff ;在我的方法开始工作之后,将代码留在原地是否可以接受?(如果需要"可接受性"的定义来使这个问题成为目标,那么使用"不是一个关于编程争议的问题,例如if(boolean)
在它后面只用一行省略括号,尽管如果你有更好的东西继续使用你的定义我不介意)
是否有更有效的方法来完成调试比我正在做的更容易?
你知道我想要的任何东西,但我已经忘记了(尽可能多的信息被理解).
首先,我应该说"恒定对象"一词可能不太正确,可能已经意味着与我的想法完全不同,但这是我能想到的最好的术语来描述我所说的内容.
所以基本上我正在设计一个应用程序,我遇到的东西似乎可能有一个现有的设计模式,但我不知道它是什么或搜索什么,所以我将描述它是什么我是试图做,我正在寻找有关实施它的最佳方法的建议.
让我们说你有一节课:
public class MyClass {
private String name;
private String description;
private int value;
public MyClass(String name, String description, int value) {
this.name = name;
this.description = description;
this.value = value;
}
// And I guess some getters and setters here.
}
Run Code Online (Sandbox Code Playgroud)
现在让我们说你事先知道只会说这个类的3个实例,并且数据也是预先知道的(或者至少会在运行时从文件中读取,并且确切的文件名是事先知道的).基本上我得到的是数据在运行时(一旦设置好)就不会改变.
起初我以为我应该在某处声明一些静态常量,例如
public static final String INSTANCE_1_DATA_FILE = "path/to/instance1/file";
public static final String INSTANCE_2_DATA_FILE = "path/to/instance2/file";
public static final String INSTANCE_3_DATA_FILE = "path/to/instance3/file";
public static final MyClass INSTANCE_1 = new MyClass(getNameFromFile(INSTANCE_1_DATA_FILE), getDescriptionFromFile(INSTANCE_1_DATA_FILE), getValueFromFile(INSTANCE_1_DATA_FILE));
public static final …Run Code Online (Sandbox Code Playgroud) 我有一个方法,它将返回一个对象或None查找失败.以下哪种风格更好?
def get_foo(needle):
haystack = object_dict()
if needle not in haystack: return None
return haystack[needle]
Run Code Online (Sandbox Code Playgroud)
要么,
def get_foo(needle):
haystack = object_dict()
try:
return haystack[needle]
except KeyError:
# Needle not found
return None
Run Code Online (Sandbox Code Playgroud)
我还没有决定哪个更适合自己.另一个选择是return haystack[needle] if needle in haystack else None,但我不确定那更好.
我有一个基本问题.我有一个MethodB回归Integer.我有一个MethodA我想传递从中检索的值的地方MethodB.
它是一个正确的方式(代码风格,而不是语法)传递MethodB到MethodA下面提及?
MethodA(MethodB());
Run Code Online (Sandbox Code Playgroud) coding-style ×10
c# ×2
java ×2
c++ ×1
coldfusion ×1
data-dumper ×1
debugging ×1
folding ×1
haskell ×1
logging ×1
pci-dss ×1
perl ×1
php ×1
python ×1
security ×1
vim ×1
whitespace ×1