anchor.diff:    :marked
       **Why?** When a service accepts only dependencies associated with type tokens, the `@Injectable()` syntax is much less verbose compared to using `@Inject()` on each individual constructor parameter.
       
  -    **为何？** 当一个服务只接受类型令牌相关的依赖时，比起在每个构造函数参数上使用`@Inject()`，`@Injectable()`的语法简洁多了。
  +    **为何？** 当服务只接受类型令牌相关的依赖时，比起在每个构造函数参数上使用`@Inject()`，`@Injectable()`的语法简洁多了。
   
   +makeExample('style-guide/ts/07-04/app/heroes/shared/hero-arena.service.avoid.ts', 'example', 'app/heroes/shared/hero-arena.service.ts')(avoid=1)
   :marked
  
positive.code:   :marked
      **Do** put bootstrapping and platform logic for the app in a file named `main.ts`.
      
      **坚持** 把应用的引导程序和平台逻辑放到一个名字为`main.ts`的文件里。
  
  .s-rule.avoid
    :marked
      **Avoid** putting app logic in the `main.ts`. Instead consider placing it in a Component or Service.
      
      **避免** 把应用逻辑放到`main.ts`里。考虑把它放到一个组件或服务里面。
  
  .s-why
    :marked
      **Why?** Follows a consistent convention for the startup logic of an app.
      
      **为何？** 遵循一个前后一致的公约来处理应用的启动逻辑。
  
  .s-why.s-why-last
    :marked
  
negative.code:   :marked
      **Why?** Being DRY is important, but not crucial if it sacrifices the others in LIFT, which is why we call it T-DRY. We don’t want to type `hero-view.component.html` for a view because, well, it’s obviously a view. If it is not obvious or by convention, then we name it.
      
      **为何？** 虽然不重复自己公约很重要，但是如果要牺牲其他的LIFT公约，它就不是最重要的，这就是为什么我们说**尝试**不重复自己(T-DRY)。我们不愿意为了视图使用`hero-view.component.html`，因为它明显是一个试图。如果它不是很明显，那么我们就把视图单词加到它的名字里。
  
  a(href="#toc") Back to top
  
  