标签: code-organization

是否有帮助组织#includes的工具?

是否有任何工具可以帮助组织#include属于.c或.h文件顶部的s?

我只是想知道因为我正在重组我的代码,将各种小函数定义/声明从一个长文件移动到不同的较小文件中.现在,每个较小的文件都需要位于#include长文件顶部的s 的子集.

只是烦人且容易出错,手动弄清楚所有#includes.虽然并非所有#include的代码都存在,但代码通常会编译.示例:文件A std::vector广泛使用但不包括vector; 但它目前包括一些不起眼的其他标题,恰好包括vector(可能通过一些递归包含).

c c++ code-organization header-files

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

单元测试与测试之间的依赖关系

你有什么时候做单元测试

  • 一些一般的单元测试
  • 更复杂的测试检查边缘情况,取决于一般情况

举个例子,想象一下测试一个CSV阅读器(我刚刚编写了一个演示符号),

def test_readCsv(): ...

@dependsOn(test_readCsv)
def test_readCsv_duplicateColumnName(): ...

@dependsOn(test_readCsv)
def test_readCsv_unicodeColumnName(): ...
Run Code Online (Sandbox Code Playgroud)

我希望只有在父测试成功的情况下才能运行子测试.这背后的原因是运行这些测试需要时间.许多失败的报告可以归结为一个原因也不会提供信息.当然,我可以把所有边缘情况都塞进主要测试中,但我想知道是否有更有条理的方法来做到这一点.

我发现了这些相关但不同的问题,

更新:

我发现TestNG具有很强的内置支持测试依赖性.你可以写这样的测试,

@Test{dependsOnMethods = ("test_readCsv"))
public void test_readCsv_duplicateColumnName() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

python unit-testing code-organization

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

Android项目:如何最好地组织文件

我正在构建我的第一个Android应用程序,它已经变得有点混乱了.我正在使用List/detail模式,因为它们适合环境,但因为我正在开发移动设备和平板电脑,所以它有点失控.对于每个屏幕(列表/细节是一个屏幕),创建四个文件.ListActivity,ListFragment,DetailActivity,DetailFragment.到目前为止有四个屏幕,从字面上开始项目,我有12个文件,加上一个数据库表的三个帮助文件.

我问的是,组织这个的最好方法是什么?我正在使用Android Studio,似乎我无法将文件排序到文件夹中而不将它们放在单独的包中.所以我会做一些像com.domain.app.screen1.(片段|活动),com.domain.app.screen2.(片段|活动)等等?或者我忍受了吗?或者有更好的方法吗?

如果我不清楚,请告诉我,我会尽力清除它

android code-organization

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

Javascript:如何理解所有框架和设计理念?

我曾经是jQuery(及其一些小插件)的用户.我多年来开发的Javascript代码最好被描述为......凌乱.它在这里和那里使用了大量的全局变量和函数,没有使用组织代码的标准方法,也没有使用任何设计模式.

我目前正在构建一个新版本的网站,我已经完成了与PEAR :: MDB2Smarty模板的后端.剩下的就是自制PHP和一些课程.

现在,我将在网站顶部添加Javascript图层,以提高某些功能的用户友好性.(同时确保一切都优雅地降级)我想写出比以前更好,更清晰,更有条理的Javascript,所以我做了一些研究.我阅读了Stefanov的面向对象的Javascript,以便更好地掌握我所知道的一些概念(原型,构造函数等).现在我陷入困境,我想知道我应该使用哪些Javascript框架,以及如何组织它们.

在进行我的研究之后,我理解了Cappuccino和Objective-J,而Sproutcore并不是我想要的.引用Cappucino关于页面的话:

卡布奇诺不是为建立网站或使现有网站更"动态"而设计的.我们认为这些目标与应用程序开发的目标相差甚远,无法通过单一框架提供.像Prototype和jQuery这样的项目非常适合这些任务

就是这样.然后我发现了Coffee Script,它更像是一对一的"编译器",并且无法帮助我实际组织我的代码.

我还偶然发现了一些提供指导的文章:

我还发现了Backbone.js,Shoestring,JavaScriptMVC,Google Loader,jQuery Tools,jQuery UI.我真的不知道该怎么办......我知道的事情:

  • 我不想花太多时间学习太复杂的东西,我希望尽可能保持简单和灵活(这就是为什么我不在后端使用Symfony),但是干净整洁.
  • 我想使用jQuery,问题是,我应该用它来做什么?(也兼容)

现在,我使用jQuery和jQuery Tools,并使用简单的属性和方法在一个简单的命名空间/对象文字中"组织"所有这些,并且,由于网站已本地化,我只是计划使用简单的vsprintf(就像我一样)在后端)使用键:从后端提供的对象文字加载的值对.JavaScriptMVC似乎很有趣,但我担心这会给规模相当小的项目带来太多的复杂性.这是我需要你的建议的地方!非常感谢你提前.

javascript jquery frameworks code-organization

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

如何编写简单的版本控制系统?

我想做一个简单的版本控制系统,但我没有关于如何构建我的数据和我的代码的想法.

这是一个简短的例子:

  1. 用户登录
  2. 上传文件时,用户有两个选项:
    • 提交一个新文件
    • 提交文件的新版本

用户应该能够看到树.(不同版本)树最多只能达到2个级别:

|
|--File_A_0
 \--File_A_1
 \--File_A_2
 \--File_A_3
 \--File_A_4
Run Code Online (Sandbox Code Playgroud)

还有两种类型的文件,一个final(最新批准的版本)和一个草稿版本(最新上传的文件)该文件将物理存储在服务器上.每个文件都由用户(或更多)拥有,只有一个组.

编辑:组代表一组文档,文档只能由一个组一次拥有.用户不依赖于组.

开始编辑:

这就是我所做的,但效率并不高!

id_article | relative_group_id | id_group | title | submited | date | abstract | reference | draft_version | count | status

id_draft | id_file | version | date
Run Code Online (Sandbox Code Playgroud)

但是很难管理,扩展.我认为这是因为小组参议员......

结束编辑

所以问题是:

  • 我如何模式化我的数据库?
  • 什么样的信息应该对这项工作的版本有用?
  • 文件夹,文件是什么类型的结构?
  • 有什么样的提示,提示你做这种工作吗?

(该应用程序是用PHP和Zend Framework开发的,数据库应该是mysql或postgresql)

php sql algorithm code-organization data-structures

22
推荐指数
5
解决办法
9045
查看次数

用于组织多文件Ruby程序的系统?

是否有用于组织多文件Ruby程序的标准或传统系统?我已经开始使用Ruby中的第一个大型"项目",这是一个逻辑上组织成多个文件和目录的搜索程序.我在下面概述了我的潜在结构:

  • 主文件.该文件实现了搜索类和一般搜索协议.
  • 算法分析文件.此文件实现解释搜索结果的函数.
  • 协议目录
    • 每个协议包含一个文件进行搜索.
  • 提供目录
    • 该计划的一部分目的是搜索存档的新闻源.此功能的文件将放在此文件夹中.

但是,代码目前有一个类(让我们称之为Searcher),每个协议的搜索类都继承自(GoogleSearcher <Searcher).为了管理这个,我需要将主文件包含在这些协议文件中(对吗?),考虑到我理想的结构,这似乎是不可能的.

除了我的具体例子,我想知道是否有任何约定,例如"更多文件而不是更少",或"文件的逻辑结构是不必要的".有一个"帮助"函数的文件是常见的(例如在Rails中?)什么级别的抽象被认为是合适的?

最后,我计划有一天将它集成到Rails作为库(不是插件;我希望它也可以单独工作).我不知道这是否会影响组织.

我知道这是一个非常开放的问题,但那是因为我会感谢任何与远程相关的建议.提前致谢.

ruby ruby-on-rails project code-organization project-organization

22
推荐指数
2
解决办法
8496
查看次数

如何在Visual Studio中组织大型项目的F#源(> 300个类)?

在C#中,您可以将文件放在与其命名空间相对应的文件夹中,并在解决方案资源管理器中查看它们.

在F#中,似乎我必须将所有内容放在简单有序的列表中进行编译.当我达到~300级的规模时,它会让人感到有些困惑和混乱,我开始羡慕C#,并认为它可能是类型推断的代价.

有没有比拆分成几个组件更好的选择?

由F#编译器的源来看它的路线,他们已经采取,但我有互联组件(控制器视图,> 300类 - - 视图模型)的相当大的系统,我想是因为在循环依赖的一个组件,即使在接口水平.

我应该忘记一个文件 - 一个类并创建一些巨大的文件?(例如,在F#编译器中,您有几个100kb到300kb范围内的源文件,并且有些自动生成1Mb左右!)

您对大型F#项目的体验是什么?

f# assemblies code-organization visual-studio c#-to-f#

21
推荐指数
2
解决办法
3161
查看次数

组织扩展方法

您如何组织扩展方法?假设我有对象类和字符串类的扩展我很想将这些扩展方法分成IE类:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我是把它弄得太复杂还是这个有意义?

c# extension-methods code-organization

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

如何在Rebol模块中绑定单词?

据我所知,该module!类型为受保护的命名空间提供了比object!'use函数更好的结构.如何在模块中绑定单词 - 我注意到与未绑定单词相关的一些错误:

REBOL [Type: 'module] set 'foo "Bar"
Run Code Online (Sandbox Code Playgroud)

另外,Rebol如何区分module('foo)的本地字和系统函数('set)的字?

稍后更新,不久之后:

我看到有一个改变绑定方法的开关:

REBOL [Type: 'module Options: [isolate]] set 'foo "Bar"
Run Code Online (Sandbox Code Playgroud)

这有什么不同的做法?默认情况下使用此方法有什么问题?

namespaces module rebol code-organization rebol3

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

F#代码组织:类型和模块

如何在模块内部编写函数或作为某种类型的静态成员之间做出决定?

例如,在F#的源代码中,有许多类型与同名模块一起定义,如下所示:

type MyType = // ...

[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module MyType = // ...
Run Code Online (Sandbox Code Playgroud)

为什么不简单地将操作定义为MyType类型的静态成员?

f# module code-organization static-members

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