问题标签 [magic-string]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Getting rid of hardcoded strings in JavaScript with ASP.NET MVC
We have a few problems in a project I am working on, where we have a lot of JavaScript files, where we have hardcoded URLs to controller actions.
- Hardcoded URLs are proned to mistyping
- Hardcoded URLs in JavaScript scripts will cause a breakage if the related controller or action's name is changed
- Tools like ReSharper (to my knowledge) can't statically analyse it's way to saying the an action is not used, if the URLs pointing to it are hardcoded.
Question(s)
How can we avoid using hardcoded URLs in JavaScript ? - are there any existing frameworks out there that could solve this problem ?
Look forward to hearing your insight.
Thanks.
c# - 遍历用字符串名称初始化的枚举类型?
是否可以在不知道其类型的情况下迭代枚举?
假设我将表示枚举类型的字符串名称传递给方法。
然后我会以某种方式需要从该字符串名称中获取枚举类型并遍历集合以提取枚举中包含的名称/值。
php - 传递 PHP MAGIC CONSTANTS 或 $GLOBALS
我怎么可能使用这些变量之一?我尝试了很多版本并不断收到错误
php - 在 php 中定义自己的魔法常量?
无论如何,在 php 中,我们可以定义我们自己的魔法常量,该值可以在整个程序中变化,以及如何使用SUPER GLOBAL SCOPE
.
javascript - 任何像 T4MVC 这样的外部 JS 文件解决方案?
我在 MVC 项目中使用 T4MVC。我的问题是外部 JS 文件有这样的解决方案吗?很多时候需要在外部 JS 文件中使用 URL 或字符串(进行比较)。刺痛应用的变化。或者请建议 T4MVC 可以用于相同的用途。
非常感谢您的时间、帮助和分享。
c# - 避免魔术弦反射与常数
根据以下 2 个示例,什么是避免魔法的更好方法?
已知
的关系,我们知道类是什么意思
未知关系
我们不知道类(因为多个类可能有一个具有此名称的属性),或者即使该属性存在于此处
我可以创建一个定义类/es,它将包含所有属性作为 const,这样我就可以避免我的属性的冗余,但维护这个定义也是可行的。
当我进行反思时,我会这样做,MemberName.GetMemberName<Contact>( x=> x.Anniversary)
并且任何更改都会自动应用,但是当我遇到第二种情况时,我只是假设可能存在此属性。我不能使用显示反射,因为即使代码仍然有效,属性名也可能在其他类中发生更改。反射也增加了一些开销。
更新
该问题与 DevExpress 密切相关,因为它们到处使用“MagicStrings”,您无法更改基类
c# - 优化 BaseControllerWithDataContext 避免魔术字符串
我将如何避免在以下代码中使用所谓的魔术字符串?具体来说:System.Web.HttpContext.Current.Items["DomainDataContext"]
基本上,此类在 Controller 内实现了一个 DataContext。此类是类库的一部分,不能直接访问 DataContext 类(即 .dbml 文件)
我试图用另一个泛型类型参数来做,但是遇到了问题"cannot use sealed class 'System.String' as type parameter constraint"
那么解决这个问题的最佳方法是什么?
python - 如果不编码基础值,使用 Enum 会带来什么好处?
编辑:我已经从原始问题中大量编辑了这个问题,以专注于 Enum 在这种情况下的优势(该问题主要基于意见而被搁置)
我理解在Enum
将人类可读的字符串转换为基础(例如数字)值时使用的意义,这个答案FederalHoliday
中的类就是一个很好的例子。
但是我正在考虑的用例只是函数参数被限制为一组可能的值,这些值当前作为“魔术字符串”传递。所以在Enum
这里实现并不会真正提高代码的可读性(如果有的话,它会使代码更加混乱)。将一个字符串变成一个Enum
,只是为了比较实际上是相同的字符串(即 的名称Enum
)感觉有点矫枉过正。
这个答案列出了枚举的一般优势,但我不确定其中有多少适用于这种情况。
为了澄清我的意思,这里有一个例子,它有一个函数打印一个具有特定大小写的字符串,如下所示mode
:
要查看此操作,请运行以下命令:
给出:
所以我的问题是:
Enum
当字符串不代表下面的另一个值时,带来什么好处?有什么方法可以使代码更健壮吗?
我读过的其他内容:
主要是关于Enum
s 一般,特别是当字符串表示下面的另一个值时:
这似乎有一个类似于我的例子(在Enums are interoperable下),但我很难理解围绕它的技术讨论,它只显示设置Enum
,而不是使用它:
编辑:在这种情况下,可以将字符串直接映射到它们对应的函数,但这在我的实际用例中是不可能的,因为代码更复杂。(但这是在评论中提出建议的人的一个很好的提示。)
python - 当 Enum 不对底层值进行编码时,使用 Enum 有什么好处?
我理解在Enum
将人类可读的字符串转换为基础(例如数字)值时使用的意义,这个答案FederalHoliday
中的类就是一个很好的例子。
但是我正在考虑的用例只是函数参数被限制为一组可能的值,这些值当前作为“魔术字符串”传递。所以在Enum
这里实现并不会真正提高代码的可读性(如果有的话,它会使代码更加混乱)。将一个字符串变成一个Enum
,只是为了比较实际上是相同的字符串(即 的名称Enum
)感觉有点矫枉过正。
这个答案列出了枚举的一般优势,但我不确定其中有多少适用于这种情况。
为了澄清我的意思,这里有一个例子,它有一个函数打印一个具有特定大小写的字符串,如下所示mode
:
要查看此操作,请运行以下命令:
给出:
所以我的问题是:
Enum
当字符串不代表下面的另一个值时,带来什么好处?有什么方法可以使代码更健壮吗?它会添加什么吗?
我读过的其他内容:
主要是关于Enum
s 一般,特别是当字符串表示下面的另一个值时:
这似乎有一个类似于我的例子(在Enums are interoperable下),但我很难理解围绕它的技术讨论,它只显示设置Enum
,而不是使用它:
c# - 记录字符串信息是否属于魔术字符串?
我想知道一个基本的事情。
在上面的行中,字符串是否属于魔术字符串?
任何针对响应/返回的硬编码验证/操作对我来说都被视为“魔术字符串”。(例如:_config["EmailTo"]
应该是_config.EmailTo
,if(list.contains("error"))
应该是if(list.contains(errorValue))
欣赏你的想法!