2012-05-26 7 views
1

Я не очень хорошо разбираюсь в JavaScript. Я пытаюсь написать класс конфигурации сборки, который можно использовать для установки параметров «на лету». Идея состоит в том, чтобы передать в среду, в которой она должна быть запущена, а затем правильно настроенные переменные. У меня есть следующее:Как я могу улучшить свой класс конфигурации JavaScript для Javascript?

function BuildConfig(){ 
    this.build = 'html5'; 
    this.server = 'http://someurl', 
    this.nfc = true, 
    this.barcode = true, 
    this.scheduler = true, 
    this.getConfig = function(buildType){ 

    switch(buildType) 
     { 
     case "ios": 
      this.build = 'ios'; 
      this.server = 'http://someurl'; 
      this.nfc = true; 
      this.barcode = false; 
      this.scheduler = false; 
      break; 
     case "android": 
      this.build = 'android'; 
      this.server = 'http://someurl'; 
      this.nfc = false; 
      this.barcode = true; 
      this.scheduler = false; 
      break; 
     case "websiteanonymous": 
      this.build = 'websiteanonymous'; 
      this.server = 'http://someurl'; 
      this.nfc = true; 
      this.barcode = false; 
      this.scheduler = true; 
      break; 
     case "website": 
      this.build = 'website'; 
      this.server = 'http://someurl'; 
      this.nfc = true; 
      this.barcode = true; 
      this.scheduler = false; 
      break; 

     default: 

     } 

    }; 
}; 

Это нормально? Могут ли быть сделаны какие-либо улучшения?

Благодаря

+0

вы можете отправить это в http://codereview.stackexchange.com/ слишком – ajax333221

ответ

1

Ваш подход в порядке. А ниже код немного короче:

function BuildConfig(type) { 
    // Defaults 
    this.build = 'html5'; 
    this.server = 'http://someurl'; 
    this.nfc = true; 
    this.barcode = false; 
    this.scheduler = false; 

    switch (type) { 
     case "ios": 
      this.build = 'ios'; 
      this.scheduler = true; 
      break; 

     case "android": 
      this.build = 'android'; 
      this.server = 'http://anotherurl'; 
      this.nfc = false; 
      break; 

     case "websiteanonymous": 
      this.build = 'websiteanonymous'; 
      this.server = 'http://otherurl'; 
      this.barcode = true; 
      break; 

     case "website": 
      this.build = 'website'; 
      break; 
    } 
} 

var config = new BuildConfig('android'); 
0

Кажется, вы повторяете себя слишком много, во всех ваших случаях (за исключением умолчанию) вы имеете их с теми же значениями:

 ... 
     this.server = 'http://someurl'; 
     this.nfc = true; 
     this.barcode = true; 
     this.scheduler = true; 
     ... 

Я рекомендую сделать:

  • создать флаг var и применить изменения с его помощью
  • или, сделайте смену auto макс. и обратно в case default
+0

жаль значения предназначены для изменения. Я просто показывал общую структуру. – jini

Смежные вопросы