Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有任何Haskell土地等同于Ruby土地';s Bundler等人,如果不是,那么如何设计如此结构化的项目?_Ruby_Haskell_Tdd_Bundler_Setup Project - Fatal编程技术网

是否有任何Haskell土地等同于Ruby土地';s Bundler等人,如果不是,那么如何设计如此结构化的项目?

是否有任何Haskell土地等同于Ruby土地';s Bundler等人,如果不是,那么如何设计如此结构化的项目?,ruby,haskell,tdd,bundler,setup-project,Ruby,Haskell,Tdd,Bundler,Setup Project,读者注意:请容忍我。我保证有个问题 我有一个问题要解决,我想“哦,我会用Ruby做的。” 删除problemsolver/problemsolver.gempec中的s.add\u development\u dependency“rspec”上的注释,然后 $ bundle exec rspec --init The --configure option no longer needs any arguments, so true was ignored. create spec/s

读者注意:请容忍我。我保证有个问题


我有一个问题要解决,我想“哦,我会用Ruby做的。”

删除
problemsolver/problemsolver.gempec
中的
s.add\u development\u dependency“rspec”
上的注释,然后

$ bundle exec rspec --init
The --configure option no longer needs any arguments, so true was ignored.
  create   spec/spec_helper.rb
  create   .rspec
新测试进入
spec/
,并且必须位于以
\u spec.rb
结尾的文件中。例如,
spec/version\u spec.rb

describe 'Problemsolver' do
  it 'should be at version 0.0.1' do
    Problemsolver::VERSION.should == '0.0.1'
  end
end
运行规范——忽略类似的代码更改运行程序——非常简单:

$ bundle exec rspec
.

Finished in 0.00021 seconds
1 example, 0 failures
你看不到,但信息的颜色编码很好,可以快速扫描“我搞砸了吗?”?这方面有很多好处:

  • 安装速度很快,几乎没有大脑(尽管弄清楚要调用哪些命令并不容易)
  • 源代码树的标准化布局缩短了对新代码库的熟悉期,使协作更加简单,并减少了在开始一个项目时的停顿时间
  • 对工具的高度依赖会在社区中传播最佳实践,大致以新项目创建的速度进行
添加覆盖工具、代码观察器、linter和其他工具并不困难


如果一个人认为“哦,我会在哈斯克尔做这件事”,那么这种情况与这种情况形成了不利的对比

“太好了,”你会想,“我被纠缠得不得了,我敢打赌所有最新的Haskell软件开发最佳实践都在我的磁盘上等待着。”

请允许我总结一下我的感受:
:(

生成的阴谋集团文件甚至没有指定
Main
,更不用说设置基本项目的说明了。不过,好吧。如果你四处放屁,试图找到正确的搜索关键字,你会找到合适的关键字,除了:

  • 所有Haq源代码都被抛出到根目录中
  • Haq的测试代码仅在
    test.hs
    中,仅为快速检查,无法通过拆分文件测试继续项目
  • 所有这些都必须为每个新项目手动编写或复制
查看真实世界的Haskell's,你会发现它甚至没有提到阴谋集团,完全回避了项目布局的问题。Stewart善意回答的任何资源都没有在上述任何一个方面得到解决,我要注意,Stewart先生没有解释如何使用任何引用的工具

请注意,被接受的答案引用了一个项目,该项目已经进行了足够多的工作,因此不是一个好的答案,但确实说

由于cabal测试还不存在——我们有一个学生正在为今年的代码夏做测试!——我们最好的机制就是使用cabal的用户钩子机制

嘿,好吧,阴谋集团的文件!确实有一些例子,但它们非常做作,但不能不给人一种印象,每个人都是独立的,祝你好运

当然,总有一些看起来不错,但它的示例代码除了在wiki上看到的以外没有提供任何东西,并且是不可伸缩的,因为一旦我的程序变得复杂,我就开始开发将测试划分为可管理模块的方法。我甚至不确定“assessim”是怎么回事,也不同意它耳鼻喉科

我对链接的HTF问题的评论特别感兴趣:Haskell工具链深受小决策的折磨。我实际上无法着手手头的任务——解决我在Haskell的问题——因为我正准备让我的环境恰到好处。这是为什么不好:

  • 这是白费力气。除非我正在编写一个测试工具,否则我很少会关心我的测试是如何进行的,只是从哪里开始
  • 这很难学习。似乎没有单一的资源来建立一个项目,并进行测试,而且确实存在的各种资源是非常多样的,没有任何帮助
  • 这很难复制。有这么多活动的片段要安排,我每次都会做得不一样
  • 作为一个推论,它是独特的。这意味着它很难合作,也很难拿起休眠的项目
这简直太臭了

也许我错了。在Haskell空间中是否存在一些广告宣传不好的工具或开发严密的工具来做类似Bundler+Rspec的事情?如果没有,是否有一个广告宣传不好的现代Haskell测试的典型例子,其中包括Stewart先生的所有参考产品?项目创建或演示:

  • 按照惯例和工具,应以明确定义的方式将测试代码与应用程序代码分开(在Ruby land中,Rspec测试在
    spec/
    中进行,黄瓜特性在
    features/
    中进行)
  • 不应要求最终用户编译和安装测试依赖项
  • 应易于复制,希望不超过10分钟,并且
  • 应该标准化还是有希望标准化
我认为在哈斯凯尔土地上根本没有这样的东西是不是错了


Edit0:请注意,Ruby语言的社区并不是唯一适用的比较。Paul R.正确地指出了配置优于约定的强大趋势。其他语言通过其他方式解决了启动可扩展项目结构的问题:

  • C::这种语言是值得尊敬的,并且有很好的文档记录,因此您很难确定采用哪种文档记录良好的方法。没有这样的工具
  • Java::配置优于约定:您在编译器级别被绑定到它中。有许多工具,并且有很好的文档记录
  • Scala::强大的工具支持
  • Erlang::如果你知道你要找的是什么,那么这是一个值得尊敬的、松散的文档记录。如果你需要的话,可以说是配置优于常规
    $ bundle exec rspec
    .
    
    Finished in 0.00021 seconds
    1 example, 0 failures
    
    $ mkdir problemsolver
    
    $ cd problemsolver/
    
    $ cabal init
    Package name [default "problemsolver"]? 
    Package version [default "0.1"]? 0.0.1
    Please choose a license:
       1) GPL
       2) GPL-2
       3) GPL-3
       4) LGPL
       5) LGPL-2.1
       6) LGPL-3
     * 7) BSD3
       8) MIT
       9) PublicDomain
      10) AllRightsReserved
      11) OtherLicense
      12) Other (specify)
    Your choice [default "BSD3"]? 
    Author name? Brian L. Troutwine
    Maintainer email [default "brian@troutwine.us"]? 
    Project homepage/repo URL? 
    Project synopsis? Solves a problem.
    Project category:
       1) Codec
       2) Concurrency
       3) Control
       4) Data
       5) Database
       6) Development
       7) Distribution
       8) Game
       9) Graphics
      10) Language
      11) Math
      12) Network
      13) Sound
      14) System
      15) Testing
      16) Text
      17) Web
      18) Other (specify)
    Your choice? ProblemSolver
    ProblemSolver is not a valid choice.
    Your choice? 18
    Please specify? ProblemSolver
    What does the package build:
       1) Library
       2) Executable
    Your choice? 2
    Generating LICENSE...
    Generating Setup.hs...
    Generating y.cabal...
    
    You may want to edit the .cabal file and add a Description field.
    
    $ ls
    LICENSE  problemsolver.cabal  Setup.hs