为什么将源文件包含到其他源文件中不是一个好习惯?更好的方法是包含头文件。这种方法有什么好处,反之亦然有什么缺点?请原谅我糟糕的英语。
我正在写第二人称只是因为它很容易,对你而言.
你正在使用一个游戏引擎,并且真的希望特定的引擎类有一个新的方法来做'bla'.但是你宁愿不将你的"游戏"代码传播到"引擎"代码中.
因此,您可以使用一种新方法从中派生一个新类,并将该代码放在"游戏"源目录中,但也许还有另一种选择?
所以这在C++语言中可能完全是非法的,但是你首先想到,"也许我可以通过我自己的标题向现有类添加一个新方法,其中包含'父'标题和一些特殊语法.这在工作时是可行的使用命名空间,例如..."
假设你不能在多个标题中声明一个类的方法(并且你很可能不能确定),那么支持"中间件/引擎/库"和"应用程序"之间的清晰划分的其他选项是什么,你奇迹?
我正在开发一个Web 2.0站点,我一直在研究网站如何处理菜单和导航栏.许多站点(如twitter)使用UL,而stackoverflow等站点使用ID包含链接的div.
除了消除一些IE错误之外,不使用UL是否有优势?
使用UL是否有优势?
谢谢!
正如在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中描述的那些缺点,但是有没有这样的实例(使用类型字段)比使用虚函数的语言特性更好的解决方案?或者这种做法应该被列为纯粹的邪恶?
现实的例子比人为的例子更受欢迎,但我仍然对人为的例子感兴趣.另外,你有没有在生产代码中看到这一点(即使虚拟功能会更容易)?
我们有一个大型的SQL驱动软件系统,自Delphi 1以来就已存在.它在所有各种项目中使用相同的原始项目文件.我们最近开始升级到Delphi XE2,我一直在考虑创建新项目文件并重新添加所有源代码的想法 - 以确保它们获得新的Delphi XE2项目的推荐默认值.
有人会推荐这个吗?有什么风险?显然这是一项艰巨的任务,重新定义版本号,项目名称/描述/公司信息等等.但是原始项目的大小让我感到害怕.3个主要的可执行文件加上许多其他可执行文件,总共大约有300万行代码.
我想这样做的主要原因是因为我已经看到新的Delphi XE2项目如何自动创建每个平台和发布的子目录(Win32,Win64,Debug,Release等).我们的项目目前一团糟,我一直在努力清理它.
那你觉得风险是什么呢?为什么或为什么不是这个好主意?可以有一些"重置"默认值的替代方案吗?
我倾向于将多行代码填充到某个任务中,并在顶部添加一个小注释,如下所示:
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多个方法,那么任何其他方法都不需要块,并且所有块的方法都是还小.
我最近参与了一个我们必须使用PowerShell脚本部署的项目.我们在不同的文件中编写了2000行或多或少的代码.其中一些专门用于常用方法,但是在为每个方法编码500行之后,很难找到使用什么方法或者是否有必要实施新方法.
所以,我的问题是关于实现powershell函数库的最佳方法是什么:
有一些文件包含大量代码比拥有大量代码行的文件更好吗?
首先......我喜欢保持井井有条.因此,我开始困扰我,我的应用程序中的控制器列表只是在一个大目录中不断增长.
理想情况下,我可以构建一个子目录列表并组织我的控制器.您可以使用命名空间执行此操作,但随后子目录显示在URL中,我真的不希望这发生.
有没有人有不同的策略来保持他们的控制器,帮助器,模型和视图组织?
namespaces ruby-on-rails code-organization subdirectory ruby-on-rails-4
我无法实现应该是一项简单的任务.我理解代码组织的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/mylib和pkg/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!
我正在编写一个具有非常复杂的循环的脚本:
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子句.问题是,许多这些...包含读/写语句到两个把手inFH和outFH,使用where的语句将呈现这两个名字断章取义.我每次使用where语句时都必须发送这两个变量.
有没有更好的方法来解决这个问题?
c++ ×2
c ×1
coding-style ×1
css ×1
delphi ×1
delphi-xe2 ×1
go ×1
haskell ×1
html ×1
indentation ×1
java ×1
namespaces ×1
package ×1
powershell ×1
subdirectory ×1