标签: code-organization

为什么我们不应该在 C 中包含源文件

为什么将源文件包含到其他源文件中不是一个好习惯?更好的方法是包含头文件。这种方法有什么好处,反之亦然有什么缺点?请原谅我糟糕的英语。

c code-organization

5
推荐指数
2
解决办法
2636
查看次数

扩展现有的类,如命名空间(C++)?

我正在写第二人称只是因为它很容易,对你而言.

你正在使用一个游戏引擎,并且真的希望特定的引擎类有一个新的方法来做'bla'.但是你宁愿不将你的"游戏"代码传播到"引擎"代码中.

因此,您可以使用一种新方法从中派生一个新类,并将该代码放在"游戏"源目录中,但也许还有另一种选择?

所以这在C++语言中可能完全是非法的,但是你首先想到,"也许我可以通过我自己的标题向现有类添加一个新方法,其中包含'父'标题和一些特殊语法.这在工作时是可行的使用命名空间,例如..."

假设你不能在多个标题中声明一个类的方法(并且你很可能不能确定),那么支持"中间件/引擎/库"和"应用程序"之间的清晰划分的其他选项是什么,你奇迹?

c++ code-organization

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

HTML网站开发:div的vs ul用于导航和菜单

我正在开发一个Web 2.0站点,我一直在研究网站如何处理菜单和导航栏.许多站点(如twitter)使用UL,而stackoverflow等站点使用ID包含链接的div.

除了消除一些IE错误之外,不使用UL是否有优势?

使用UL是否有优势?

谢谢!

html css code-organization

4
推荐指数
3
解决办法
7419
查看次数

类型字段是纯粹的邪恶吗?

正如在12.2.5节中的c ++编程语言第3版中所讨论的那样,类型字段倾向于创建比使用虚函数和多态的等效代码更不通用,容易出错,更不直观和更少可维护的代码.

举个简短​​的例子,下面是如何使用类型字段:

void print(const Shape &s)
{
  switch(s.type)
  {
  case Shape::TRIANGE:
    cout << "Triangle" << endl;
  case Shape::SQUARE:
    cout << "Square" << endl;
  default:
    cout << "None" << endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

很明显,这是一个噩梦,因为为此增加了一种新的形状,十几种类似的功能会容易出错并且很费劲.

尽管存在这些缺点以及TC++ PL中描述的那些缺点,但是有没有这样的实例(使用类型字段)比使用虚函数的语言特性更好的解决方案?或者这种做法应该被列为纯粹的邪恶?

现实的例子比人为的例子更受欢迎,但我仍然对人为的例子感兴趣.另外,你有没有在生产代码中看到这一点(即使虚拟功能会更容易)?

c++ code-organization

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

有人会建议重新创建新项目并重新添加源,为什么?

我们有一个大型的SQL驱动软件系统,自Delphi 1以来就已存在.它在所有各种项目中使用相同的原始项目文件.我们最近开始升级到Delphi XE2,我一直在考虑创建新项目文件并重新添加所有源代码的想法 - 以确保它们获得新的Delphi XE2项目的推荐默认值.

有人会推荐这个吗?有什么风险?显然这是一项艰巨的任务,重新定义版本号,项目名称/描述/公司信息等等.但是原始项目的大小让我感到害怕.3个主要的可执行文件加上许多其他可执行文件,总共大约有300万行代码.

我想这样做的主要原因是因为我已经看到新的Delphi XE2项目如何自动创建每个平台和发布的子目录(Win32,Win64,Debug,Release等).我们的项目目前一团糟,我一直在努力清理它.

那你觉得风险是什么呢?为什么或为什么不是这个好主意?可以有一些"重置"默认值的替代方案吗?

delphi code-organization project-files delphi-xe2

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

将一个方法中的代码段与大括号分开是不好的做法?

我倾向于将多行代码填充到某个任务中,并在顶部添加一个小注释,如下所示:

public void doSomething(){
    // common variables needed by all blocks

    { // comment for block 1
        ...
        ... about 5 to 30 lines of code
        ...
    }

    { // comment for block 2
        ...
        ... about 5 to 30 lines of code
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

我这样做是因为在我看来,它易于阅读,一个块所需的变量将无法在另一个块中造成伤害,并且因为我不想为其他地方不需要的块制作单独的方法.

你会说这是不好的做法吗?我编写的很多人不同意这种编码风格.我知道c#中有区域,但它们不会隔离变量.

编辑:因为每个人都建议我从块中创建方法:有时候我会这样做但我不想如果类已经有20多个方法,那么任何其他方法都不需要块,并且所有块的方法都是还小.

java coding-style code-organization

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

如何实现powershell函数库?

我最近参与了一个我们必须使用PowerShell脚本部署的项目.我们在不同的文件中编写了2000行或多或少的代码.其中一些专门用于常用方法,但是在为每个方法编码500行之后,很难找到使用什么方法或者是否有必要实施新方法.

所以,我的问题是关于实现powershell函数库的最佳方法是什么:

有一些文件包含大量代码比拥有大量代码行的文件更好吗?

powershell code-organization

4
推荐指数
2
解决办法
6920
查看次数

如何在rails 4中组织控制器目录而不会弄乱路由

首先......我喜欢保持井井有条.因此,我开始困扰我,我的应用程序中的控制器列表只是在一个大目录中不断增长.

理想情况下,我可以构建一个子目录列表并组织我的控制器.您可以使用命名空间执行此操作,但随后子目录显示在URL中,我真的不希望这发生.

有没有人有不同的策略来保持他们的控制器,帮助器,模型和视图组织?

namespaces ruby-on-rails code-organization subdirectory ruby-on-rails-4

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

为什么我不能在golang中为我的库添加一个main?

我无法实现应该是一项简单的任务.我理解代码组织的GitHub模型(即库存仓库和使用库的应用程序仓库).我觉得这很棒.但我经常发现我想mylib在一个main.go文件中捆绑一个简单的可执行文件.本main.go应该是package main和应导入mylib.换句话说,它应该是如何构建使用此库的应用程序的确切文档.

我的观点是,因为提供一个包装你的库的简单命令行界面通常足够方便,所以应该有一个简单的方法来做到这一点,而不必再做一个回购,golang应该有所帮助.

我喜欢以下内容:

$GOPATH/src/github.com/me/mylib
    mylib.go
    mylib_also.go
    main.go
Run Code Online (Sandbox Code Playgroud)

在哪里mylib是library(package mylib)并且main.go正在package main运行go install它生成bin/mylibpkg/mylib.a.

无论是main.go应导入"github.com/me/mylib"(如果我这样做,现在,我得到循环导入错误),或go会明白发生了什么,因为这个功能应该建立在和一个main.go在回购产生EXEC.可能需要导入(并且丢弃周期性错误)是更好的方法.

现在,我必须这样做

$GOPATH/src/github.com/me/mylib
    mylib/
        mylib.go
    main.go
Run Code Online (Sandbox Code Playgroud)

所以我必须导入github.com/me/mylib/mylib这很荒谬.

总之,go install应该允许包的特殊情况和导入包的main,并提供演示包API的简单cli.GitHub模型促进了两个回购,但它应该很容易在一个简单的clis!

program-entry-point code-organization package go

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

我如何处理多级缩进?

我正在编写一个具有非常复杂的循环的脚本:

main = do
    inFH <- openFile "..." ReadMode
    outFH <- openFile "..." WriteMode

    forM myList $ \ item ->
        ...
        if ... 
            then ...
            else do
                ...
                case ... of
                    Nothing -> ...
                    Just x  -> do
                        ...
                            ...
Run Code Online (Sandbox Code Playgroud)

代码很快就会飞到右边,所以我想把它分成几块,使用例如where子句.问题是,许多这些...包含读/写语句到两个把手inFHoutFH,使用where的语句将呈现这两个名字断章取义.我每次使用where语句时都必须发送这两个变量.

有没有更好的方法来解决这个问题?

haskell code-organization indentation

4
推荐指数
2
解决办法
296
查看次数