假设您有一个包含大量变量,函数和子例程的Fortran 90模块.在您的USE陈述中,您遵循哪种惯例:
, only :语法显式声明您正在使用哪些变量/函数/子例程,例如 USE [module_name], only : variable1, variable2, ...?USE [module_name]?一方面,该only子句使代码更加冗长.但是,它会强制您在代码中重复自己,如果您的模块包含许多变量/函数/子例程,那么事情就会开始变得难以驾驭.
这是一个例子:
module constants
implicit none
real, parameter :: PI=3.14
real, parameter :: E=2.71828183
integer, parameter :: answer=42
real, parameter :: earthRadiusMeters=6.38e6
end module constants
program test
! Option #1: blanket "use constants"
! use constants
! Option #2: Specify EACH variable you wish to use.
use constants, only : PI,E,answer,earthRadiusMeters
implicit none …Run Code Online (Sandbox Code Playgroud) 当我开始使用.NET Webforms时,我找不到要跟随的文件夹结构,因为VS提供了像"App_Code"这样的应用程序文件夹,大多数应用程序示例都在其中放置了"BLL","DAL"等等.
但是现在在MVC中,我检查的每个例子都使用不同的结构,这次没有标准,我没有在Google或SO上找到一个好的解决方案.
所以,也许我们可以分享我们如何组织我们的MVC项目,可以帮助其他人做出自己的想法.这是我使用的中小型项目的结构:
App_Data
Areas
Admin
Controllers
Models
Views
MyAccount
Controllers
Models
Views
Content
Images
Scripts
Styles
Controllers
HomeController.cs
Helpers
ExtensionMethods // I.e. based on HtmlHelper, use "helper" suffix
MenuHelper.cs // to be called as html.Menu()
Utilities.cs // Other generic (static) libraries, no suffix used
Models
ViewModels // for passing models to Views
RegisterViewModel.cs // use "ViewModel" suffix
Customer.cs // to extend models like adding Model Validation
Repositories
CustomerRepository.cs // use "Repository" suffix
Services
CustomerService.cs // use "Service" suffix, …Run Code Online (Sandbox Code Playgroud) asp.net-mvc conventions naming-conventions asp.net-mvc-3 asp.net-mvc-2
Ruby提供了两种以编程方式引发异常的可能性: raise并且fail都是Kernel方法.根据这些文件,它们完全相同.
出于习惯,我raise到目前为止只使用过.现在我找到了几个建议(例如这里),raise用于捕获异常,以及fail用于不应处理的严重错误.
但它真的有意义吗?当你编写一个类或模块,并在内心深处产生问题时fail,你正在查看代码的编程同事可能会很高兴地了解你的意图,但使用我的代码的人很可能不会看到我的代码,无法知道,异常是由a raise还是by 引起的fail.因此,我谨慎使用raise或fail不会对他的决定产生任何影响,无论她是否应该处理.
有人会在我的论点中看到瑕疵吗?还是有其他标准,我可能想用fail而不是raise?
我正面对一个长153个字符的特定行.现在,我倾向于在120个字符之后破坏事物(当然,这在很大程度上依赖于我和当地的惯例.)但说实话,无论我在哪里打破线条都会让它看起来很糟糕.所以我正在寻找一些关于我应该为此做些什么的想法.
这是行:
private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>();
Run Code Online (Sandbox Code Playgroud)
我对这两条关于如何/在哪里打破这条线(及其原因)以及缩短线条本身的方法持开放态度.
我们不是一个Java商店,并没有针对此类事情的本地约定,或者显然我只是遵循它们.
谢谢!
是值得学习惯例还是可读性和可维护性的祸害?
学习红宝石.我的印象是布尔属性应该如下命名:
my_boolean_attribute?
Run Code Online (Sandbox Code Playgroud)
但是,尝试执行以下操作时出现语法错误:
class MyClass
attr_accessor :my_boolean_attribute?
def initialize
:my_boolean_attribute? = false
end
end
Run Code Online (Sandbox Code Playgroud)
红宝石显然很讨厌"?".这是惯例吗?我究竟做错了什么?
有谁知道为什么Stroustrup的风格是指针的放置如下?具体来说,Stroustrup 就此事提供了哪些指导?
int* p;
Run Code Online (Sandbox Code Playgroud)
对比
int *p;
Run Code Online (Sandbox Code Playgroud)
因为声明多个变量需要在每个变量名称旁边加上星号。这将导致:
int* p, *x;
Run Code Online (Sandbox Code Playgroud)
对比
int *p, *x;
Run Code Online (Sandbox Code Playgroud)
在 K&R C 书中,他们解释说星号/指针用作助记符以帮助理解。我觉得奇怪的是,指针/星号与类型相关联,而不是每个示例的第二个显示的变量。有兴趣了解为什么选择第一种样式的背景。
希望能从 Stroustrup 那里得到一些引述来解释这一点。
我正在添加 K&R C 第二版语法第 235 页,其中星号(指针)与声明符相关联,声明符是一个标识符。
答案 在Stroustrup 的这篇关于编码风格的文章中。他解释说两者都是有效的,这取决于程序员的偏好。
我不同意这是一个基于意见的问题。Stroustrup 的文章在没有意见的情况下清楚地回答了这个问题。
在node.js中,似乎我遇到了相同的3个文件名来描述应用程序的主要入口点:
express-generator包时,app.js会创建一个文件作为生成的应用程序的主入口点.package.json文件时npm init,会提示输入主入口点文件.默认值为index.js.server.js也是主要的切入点.其他时候,似乎它们的使用方式存在细微差别.例如,该节点的应用程序的目录结构使用index.js和server.js在不同的上下文中:
app
|- modules
| |- moduleA
| | |- controllers
| | | |- controllerA.js
| | | +- controllerB.js
| | |- services
| | | +- someService.js
| | +- index.js <--------------
| +- index.js <-------------------
|- middleware.js
+- index.js <------------------------
config
+- index.js <------------------------
web
|- css
|- js
server.js <----------------------------
Run Code Online (Sandbox Code Playgroud)
这三个名字之间有什么不同?
在编写解析器时是否应该遵循最佳实践?
什么是TypeScript项目的惯用目录结构?
我希望在这样的结构中具有以下特征:
conventions ×10
coding-style ×3
c++ ×2
ruby ×2
asp.net-mvc ×1
attributes ×1
exception ×1
fortran ×1
fortran90 ×1
java ×1
line-breaks ×1
module ×1
node.js ×1
parsing ×1
pointers ×1
typescript ×1