PHP↔;JavaScript通信:常量与字符串
我正在开发一个大量使用AJAX的web应用程序。服务器通常通过数组进行应答,以连接响应的不同部分 我想知道在以下两种方法中,处理这些数组中的键的最佳解决方案是什么(未显示JSON编码和解码): 串 这个解决方案很容易阅读,特别是在JavaScript中,但实际上很脆弱,很难维护 PHP: 常数 这是一个可靠的解决方案,允许使用短键和数字键,但它很重且难以读取(在我的情况下,使用反射自动生成JavaScript常量不是一个可接受的解决方案,并且无论如何也不能解决所有的缺点) PHP:PHP↔;JavaScript通信:常量与字符串,php,javascript,Php,Javascript,我正在开发一个大量使用AJAX的web应用程序。服务器通常通过数组进行应答,以连接响应的不同部分 我想知道在以下两种方法中,处理这些数组中的键的最佳解决方案是什么(未显示JSON编码和解码): 串 这个解决方案很容易阅读,特别是在JavaScript中,但实际上很脆弱,很难维护 PHP: 常数 这是一个可靠的解决方案,允许使用短键和数字键,但它很重且难以读取(在我的情况下,使用反射自动生成JavaScript常量不是一个可接受的解决方案,并且无论如何也不能解决所有的缺点) PHP: Ja
JavaScript:
Answer.CONSTANT_1=
答案:常数_2=
var结果=ajax(…);
警报(结果[答案.常数_1]);
根据您的说法,什么是最佳选择?一旦您将其输出JavaScript,它实际上就不会是一个常数。我个人会使用字符串,如果它能让你的代码更具可读性的话。为什么这会使它变得脆弱和难以维护?如果您需要一个常量字符串同时具有常量和可读性,则可以始终定义它。如果没有更多的信息,很难判断你是否能更好地使用数字或文字作为键。一旦你把它呼出JavaScript,它实际上就不会是一个常数。我个人会使用字符串,如果它能让你的代码更具可读性的话。为什么这会使它变得脆弱和难以维护?如果您需要一个常量字符串同时具有常量和可读性,则可以始终定义它。如果没有更多的信息,很难判断你是否能更好地使用数字或文字作为你的钥匙 我认为字符串解决方案是脆弱的,因为任何键名称的更改 还必须在使用它们的代码中执行 此结论不正确,将导致代码无法维护 考虑以下PHP数据结构:
array(
MyClass::FIELD1 => "my field1 value",
MyClass::FIELD2 => "my field2",
MyClass::FIELD3 => "field 3 is awesome",
);
class MyClass {
const FIELD1 = "field1";
const FIELD2 = "field2";
const FIELD3 = "field3";
}
假设我们希望使用一个新字段来代替field1
(如建议的用例中所示)-我们将其称为newfield
:
class MyClass {
const FIELD1 = "newfield";
....
}
现在代码处于不一致的状态。变量的名称与它的值不再有任何关联。FIELD1
常量基本上位于它所表示的字段周围
想象一下,一年后,一位新程序员正在检查这段代码。她知道newfield
存在,并希望访问它。但是她必须输入result[Answer.FIELD1]
,而不是简单地输入result.newfield
。每次她想访问newfield
时,她都要记住并应用这个映射。但是,这是一个具有数百个字段的大型应用程序,并且大多数都是以这种方式被误导的。这是脆弱且无法维护的代码
常量只能用于本质上是常量的值。典型示例是存储数学常数,如pi:
class MyMathClass {
const PI = 3.141592;
}
常量是维护易失性数据结构(字段名定期更改)的最差编程工具之一
我认为字符串解决方案是脆弱的,因为任何键名称的更改
还必须在使用它们的代码中执行
此结论不正确,将导致代码无法维护
考虑以下PHP数据结构:
array(
MyClass::FIELD1 => "my field1 value",
MyClass::FIELD2 => "my field2",
MyClass::FIELD3 => "field 3 is awesome",
);
class MyClass {
const FIELD1 = "field1";
const FIELD2 = "field2";
const FIELD3 = "field3";
}
假设我们希望使用一个新字段来代替field1
(如建议的用例中所示)-我们将其称为newfield
:
class MyClass {
const FIELD1 = "newfield";
....
}
现在代码处于不一致的状态。变量的名称与它的值不再有任何关联。FIELD1
常量基本上位于它所表示的字段周围
想象一下,一年后,一位新程序员正在检查这段代码。她知道newfield
存在,并希望访问它。但是她必须输入result[Answer.FIELD1]
,而不是简单地输入result.newfield
。每次她想访问newfield
时,她都要记住并应用这个映射。但是,这是一个具有数百个字段的大型应用程序,并且大多数都是以这种方式被误导的。这是脆弱且无法维护的代码
常量只能用于本质上是常量的值。典型示例是存储数学常数,如pi:
class MyMathClass {
const PI = 3.141592;
}
常量是维护易失性数据结构(字段名定期更改)的最差编程工具之一 难道你不希望这些键以它们存储的值命名吗?我是可读代码的爱好者。帮助我理解为什么字符串解决方案容易损坏且难以维护。另外,请帮助我理解,如果使用常量作为数字索引,为什么不能使用常量字符串作为索引?@ExplosionPills就是一个例子。我的常数具有自然更可读(和可接受)的名称。@Blackhole为什么键本身没有自然更可读(和可接受)的名称?@J.D.Pace对于数字索引,我是说常数的值。如果不使用常量,我们就不能合理地使用数字键,对吗?我认为字符串解决方案是脆弱的,因为键名的任何更改都必须在使用它们的代码中执行。但另一种解决方案也是如此,我想……难道你不希望这些键以它们存储的值命名吗?我是可读代码的爱好者。帮助我理解为什么字符串解决方案容易损坏且难以维护。另外,请帮助我理解,如果使用常量作为数字索引,为什么不能使用常量字符串作为索引?@ExplosionPills就是一个例子。我的常量具有自然更可读(和可接受)的名称。@Blackhole为什么键本身没有自然更可读(和可接受)的名称?@J.D.Pace对于数字索引,我是tal
class MyMathClass {
const PI = 3.141592;
}