2017-04-20 69 views
0

我是一个Web开发人员在一个非常小的公司,并在角控制器工作的一个网站/系统有陈述这样的..与角JS好的设计

if ((cover.coverPK == 6 || cover.coverPK == 8 || cover.coverPK == 10 || cover.coverPK == 4) && cover.coverDetailsCompleted > 0) { etc etc 

现在这些coverPKs是SQL主ID来识别不同的保险涵盖......当然,在前端引用这样的ID是不好的设计,并且新加入的开发者不知道6应该是什么意思?除非他们在SQL中进行查找。

另外,数据库ID可以更改吗?这将打破这个代码。

感谢

+0

你在问什么/回应会在这里帮助你? – DerMike

+0

我在问Angular是否是好的做法? – Luke

+0

这是可怕的做法,但它如何与Angular相关? –

回答

0

为了避免这种神奇的号码,你可以写这样的事情

$scope.typeOfCoverPKs = {"FirstPK": 1, "SecondPk": 2, etc.}; 
Object.freeze($scope.typeOfCoverPKs); 

随着Object.freeze()可以确保,即反对不操作。当然,您应该使用数据库中的表达式命名属性FirstPK, etc.

或者你可以在后端生成一个服务,它会向你发送coverPK的当前状态。

比你可以在你的if-Statement

if(cover.coverPK === $scope.typeOfCoverPKs.FirstPK) 
{ 
    //Do something 
} 

你的第二个问题写,如果数据库ID可能会改变。对此没有明确的答案。它真的取决于。例如,如果您的ID是表格的主键,则它不太可能会改变。

+0

谢谢,我想我应该有常数而不是幻数。但也只有后端应该处理这些ID而不是前端。你同意吗? – Luke

+0

不完全。如果您需要此ID来在前端做出决定,您(和前端)需要知道ID的含义。处理ID的逻辑,例如没有重复的ID是可能的,这样的东西,后端是负责任的。 – Torben