动作名称的Zend标准是camelCase,但是如果我用驼峰套管创建一个动作,则请求失败,因为它试图在没有驼峰套管的情况下调用方法(动作)!
例:
我在模块"abc"中有一个名为"changeEmail"的动作.方法是"changeEmailAction"(由Zend Tool创建).如果我尝试访问/ abc/changeEmail,我会收到一条错误,上面写着"消息:操作","changeemail"不存在,并且没有被困在__call()中.
我能够使其工作的唯一方法是仅创建全部小写的动作名称.这会导致可读性差,并且与建议的命名约定相反.我错过了什么?
我在localhost上使用了codeigniter框架,我在windows上使用camel case方法(UserModel,DbModel)命名了我的一些模型和控制器.当我将文件上传到服务器(在linux上运行)时,脚本试图加载所有全部小写的文件,所以我得到404错误,因为脚本正在寻找usermodel而不是UserModel,任何方式来解决这个问题?
我希望这不会因为太宽泛而被关闭。我知道这取决于个人喜好,但所有大小写约定都有一个起源,我想知道这个约定从何而来,以及人们为什么使用它的合乎逻辑的解释。
这就是你要去的地方var empName;。我称之为低骆驼,虽然它在技术上可能被称为别的东西。就个人而言,我喜欢var EmpName。我称那是合适的骆驼,我喜欢它。
当我第一次开始编程时,我从较低的骆驼约定开始。我不知道为什么。我只是按照所有老家伙设置的示例进行操作。变量和函数 (VB) 得到了较低的骆驼,而 subs 和属性得到了适当的骆驼。然后,在我最终牢牢掌握了编程本身之后,我变得足够自在,可以质疑我导师的策略。对我而言,使用小驼峰没有逻辑意义,因为它不一致,特别是如果您有一个变量由一个单词组成,但最终全部为小写。也没有适当的验证机制来确保您正确使用下骆驼和上骆驼,所以我问为什么不对所有事情都使用合适的骆驼。这是一致的,因为所有变量名称都经过适当的骆驼化。
深入研究后发现,当它被提出质疑时,这对许多程序员来说是一个非常敏感的问题。他们通常会回答:“嗯,这只是个人喜好”或“我就是这么学的”。在进一步刺激下,当我试图找到他们使用低级骆驼背后的逻辑原因时,它通常会引起人们的一种教条式反应。
所以有人想在适当的骆驼品种的外壳背后摆脱一点历史和逻辑吗?
我正在尝试为上下驼峰式保护套设计一个正则表达式。
这是我尝试过的
(([A-Z][a-z0-9]*){2,}|([a-z][A-Z0-9]*){2,})
Run Code Online (Sandbox Code Playgroud)
试图与此匹配上驼峰式大小写-([AZ] [a-z0-9] ){2,},但它也与其他组合匹配。第二部分也是如此-([az] [A-Z0-9]){2,})
我有web api控制器,我在WebApiConfig文件中使用这种配置方法,用于所有控制器的驼峰套管我的结果.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)
现在我有一个控制器的方法,它给Angularjs翻译提供者提供数据,所有翻译字符串都不在我的html中的camelcase中,这就是为什么我需要该方法的结果不在CamelCase中.如何避免这种特定控制器方法的骆驼套管序列化行为.
我试图让 PHP_CodeSniffer 检查类名中的驼峰命名法,但在我看来,驼峰命名法检查是不可能的(没有字典,包括技术单词)。
我已经在互联网上搜索过,但到目前为止,我看到的唯一选择是字符串是否有一些通用的分隔符来爆炸 - 即下划线、单词之间的空格等。
即使这也没有什么用处,因为只有当名称准确/始终在每个单词之间包含分隔符时,检查才能准确。
“检查”的目的是确定名称的格式是否不正确,这可能包括不正确的定界。
此外,PHP_CodeSniffer 上的资源要么很少见,要么非常基础和技术性,只有作者/开发人员才能理解。
我在一些当前的 Sniffs(即 Squiz 和 PEAR 标准)中找到了这段代码:
if (PHP_CodeSniffer::isCamelCaps($functionName, false, true, false) === false)
Run Code Online (Sandbox Code Playgroud)
但是,我查看了 PHP_CodeSniffer 核心代码,该函数仅执行以下操作:
// Check the first character first.
// Check that the name only contains legal characters.
// Check that there are not two capital letters next to each other.
// The character is a number, so it cant be a capital.
Run Code Online (Sandbox Code Playgroud)
这些基本检查总比没有好,尽管可以说对于其预期目的来说毫无用处,因为它们根本不检查驼峰命名法。
Sniff(或 PHP 脚本)如何知道在给定字符串中检查哪些“单词”以识别该字符串是否为 100% 驼峰命名法?
我看到有一个名为djangorestframework-camel-case的项目,允许在Django REST序列化程序中使用带有下划线字段的JavaScript-ish camelCase.所以,基本上,我可以发送:
{
"camelCase": "foo"
}
Run Code Online (Sandbox Code Playgroud)
并使用以下Serializer接收它:
class MySerializer(serializers.Serializer):
session_id = serializers.CharField()
Run Code Online (Sandbox Code Playgroud)
是否存在类似POST数据的内容?所以我可以camelCase=foo通过POST 发送并将其接收到我的序列化器中的underscore_case字段?
我尝试基于FormParser实现自己的解析器:
class CamelCaseFormParser(FormParser):
media_type = 'application/x-www-form-urlencoded'
def __init__(self):
print("initialized")
def parse(self, stream, media_type=None, parser_context=None):
print("parse")
...
Run Code Online (Sandbox Code Playgroud)
并且,在将其添加到DEFAULT_PARSER_CLASSESsettings.py中之后,initialized实际打印时,parse则不是.所以看来,在POST数据的情况下,application/x-www-form-urlencoded根本不使用解析器.
由于Serializers的使用方式如下:
Serializer(data=request.data)
Run Code Online (Sandbox Code Playgroud)
我正在考虑继承Serializer并data在进一步处理之前进行修改,甚至在创建Serializer之前修改它.但我要求的是一种更方便的方法,适用于所有的Serializers,而无需对它们进行子类化.
我想创建一个类的 JSON 表示形式,并自动将属性名称从 更改snake_case为lowerCamelCase,因为我想遵守 Python 中的 PEP8 以及 JavaScript 命名约定(也许更重要的是,我的后端与用户沟通lowerCamelCase)。
我更喜欢使用标准json模块,但我并不反对使用另一个开源库(例如jsonpickle可能会解决我的问题?)。
>>> class HardwareProfile:
... def __init__(self, vm_size):
... self.vm_size = vm_size
>>> hp = HardwareProfile('Large')
>>> hp.vm_size
'Large'
### ### What I want ### ###
>>> magicjson.dumps(hp)
'{"vmSize": "Large"}'
### ### What I have so far... ### ###
>>> json.dumps(hp, default=lambda o: o.__dict__)
'{"vm_size": "Large"}'
Run Code Online (Sandbox Code Playgroud) 我的团队有兴趣添加一个工具来强制执行 C++ 的样式指南。我们研究过的两个最好的选择是clang-tidy和clang-format。
clang-format 似乎可以满足我们几乎所有的需求,但是我无法确定的一件事是是否有一种方法可以使用 clang-format 配置命名约定。这可以通过 clang-tidy 使用readability-identifier-naming来完成。
clang-format 中有类似的功能吗?
我即将为一种语言编写解析器,该语言应该具有关于类型,变量等命名的严格语法规则.例如,所有类必须是PascalCase,并且所有变量/参数名称和其他标识符必须是camelCase.
例如HTMLParser,不允许,必须命名HtmlParser.有关正则表达式的任何想法可以匹配PascalCase,但没有两个大写字母吗?
camelcasing ×10
php ×3
python ×2
regex ×2
.net ×1
c# ×1
c++ ×1
clang-format ×1
clang-tidy ×1
codeigniter ×1
django ×1
json ×1
json.net ×1
parsing ×1
pascalcasing ×1
rest ×1
validation ×1