标签: coding-style

有没有一种安全的方法来使用eval在Perl中解开Data :: Dumper输出?

我有一个使用冻结数据的对象:

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)

写这个的更好的方法是什么?

perl coding-style data-dumper

1
推荐指数
4
解决办法
638
查看次数

软件和安全性 - 您是否遵循特定指南?

作为PCI-DSS审计的一部分,我们正在研究如何改进安全领域的编码标准,以确保所有开发人员都了解这一领域的重要性.

您如何在组织内处理此主题?

另外,我们在.NET 3.5中编写面向公众的Web应用程序,接受信用卡/借记卡付款.

language-agnostic security coding-style pci-dss

1
推荐指数
1
解决办法
200
查看次数

在ColdFusion中管理线宽

如果你使用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选项卡的代码行并不少见.

减少标签宽度还不够.代码库太大,无法重写/框架化.左倾齐射一切?

是否有一个简单的,成功的策略,可以将线宽减小到可管理的水平,而不会进一步损害可读性?

vim coldfusion whitespace coding-style

1
推荐指数
1
解决办法
201
查看次数

语义#region用法

您对使用应用语义使用#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区域!).

c# coding-style folding

1
推荐指数
1
解决办法
401
查看次数

遵循PHP编码的Wisdom

我读了这样一些智慧:

建议程序员在使用by-reference变量时要小心,因为它们会对代码的可读性和可维护性产生负面影响.

我自己创建解决方案,例如在每个引用变量中给出后缀,例如_ref.所以,如果我有一个名为$ files_in_root的变量,那么我将添加后缀并将其名称更改为$ files_in_root_ref.据我所知,这是一个很好的解决方案.

所以,问题来了

  1. 在PHP编码器世界中选择by-reference变量的后缀是否有任何最佳实践?或者你有吗?
  2. 一般来说,我们如何通过超过3000行代码来维持PHP项目的可读性和可维护性?

我希望PHP编码器世界对第一个问题有不成文的攻击,因为它有助于发现任何源代码的模式.

php coding-style

1
推荐指数
1
解决办法
124
查看次数

改进haskell脚本

我是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)

haskell coding-style

1
推荐指数
2
解决办法
283
查看次数

特殊调试线(java)

最近我发现自己编写了许多方法,我只能想到调用脚手架.这是一个例子:

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) 在它后面只用一行省略括号,尽管如果你有更好的东西继续使用你的定义我不介意)

  • 是否有更有效的方法来完成调试比我正在做的更容易?

  • 你知道我想要的任何东西,但我已经忘记了(尽可能多的信息被理解).

java debugging logging coding-style

1
推荐指数
2
解决办法
179
查看次数

实现常量对象的最佳方法是什么?

首先,我应该说"恒定对象"一词可能不太正确,可能已经意味着与我的想法完全不同,但这是我能想到的最好的术语来描述我所说的内容.

所以基本上我正在设计一个应用程序,我遇到的东西似乎可能有一个现有的设计模式,但我不知道它是什么或搜索什么,所以我将描述它是什么我是试图做,我正在寻找有关实施它的最佳方法的建议.

让我们说你有一节课:

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)

c++ java design-patterns coding-style

1
推荐指数
1
解决办法
286
查看次数

对于可能返回None的方法,哪种返回方式"更好"?

我有一个方法,它将返回一个对象或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,但我不确定那更好.

python coding-style

1
推荐指数
1
解决办法
309
查看次数

编码风格 - 传递方法作为参数

我有一个基本问题.我有一个MethodB回归Integer.我有一个MethodA我想传递从中检索的值的地方MethodB.

它是一个正确的方式(代码风格,而不是语法)传递MethodBMethodA下面提及?

MethodA(MethodB());
Run Code Online (Sandbox Code Playgroud)

c# coding-style

1
推荐指数
1
解决办法
183
查看次数