คู่มือสไตล์ angular2 - ทรัพย์สินพร้อมเครื่องหมายดอลลาร์?


185

ดูตัวอย่างรหัส angular2เราจะเห็นคุณสมบัติสาธารณะที่มีเครื่องหมาย $:

  <....>
  private missionAnnouncedSource = new Subject<string>();
  private missionConfirmedSource = new Subject<string>();
  // Observable string streams
  missionAnnounced$ = this.missionAnnouncedSource.asObservable();
  missionConfirmed$ = this.missionConfirmedSource.asObservable();
  <....>

ทุกคนสามารถอธิบาย:

  • เหตุใดจึงใช้ $ (เหตุผลที่อยู่เบื้องหลังสัญลักษณ์นี้คืออะไรใช้เพื่อทรัพย์สินสาธารณะทุกครั้ง)
  • คุณสมบัติสาธารณะถูกใช้ แต่ไม่ใช่วิธีการ (เช่น MissionAnnouncements (), MissionConfirmations ()) - อีกครั้งนี่เป็นแบบแผนสำหรับแอป ng2 หรือไม่

ดูเหมือนจะไม่มีอะไรเกี่ยวข้องกับเรื่องนี้ในคู่มือสไตล์ทางการหรือไม่?

คำตอบ:


265

$ ต่อท้าย (นิยมโดยCycle.js ) ถูกนำมาใช้เพื่อบ่งชี้ว่าตัวแปรเป็นสังเกต มันสามารถทำให้คู่มือสไตล์เป็นทางการเกินไป แต่ยังไม่ได้มี

อ่านเพิ่มเติมที่นี่: เครื่องหมายดอลลาร์ต่อท้าย$หมายความว่าอย่างไร

อัปเดต: อ่านเพิ่มเติมเกี่ยวกับเครื่องหมาย“ $” ต่อท้ายบนเว็บไซต์เชิงมุมที่นี่: https://angular.io/guide/rx-library#naming-conventions-for-observables


4
มันจะไม่ทำให้คู่มือสไตล์เป็นทางการ ฉันจะใส่เงิน $ 100
Eric Bishard

15
การอ้างอิงในเอกสารเชิงมุม: angular.io/guide/rx-library#naming-conventions-for-observables
michelepatrassi

66
@EricBishard คุณหมายถึง 100 $
TabsNotSpaces

1
แล้วสัญญาล่ะ
galki

7
ความปลอดภัยในการทำงาน - ทำรหัสให้เข้าใจได้ยากขึ้นสำหรับคนธรรมดา
java-addict301

14

กระบวนทัศน์การตั้งชื่อที่มีต้นกำเนิดมาพร้อมกับ Andre Saltz และแนะนำการตั้งชื่อตัวแปรทั้งหมดที่มีข้อสังเกตหรือลำธารมากมาย

getAll(): Observable<Zone[]>{
    let zone$ = this.http
      .get(`${this.baseUrl}/zones`, {headers: this.getHeaders()})
      .map(mapZone);
      return zone$;
  }

อีกวิธีหนึ่งคือการทำให้ชื่อตัวแปรมีหลายส่วนที่สามารถสังเกตได้หรือลำธารที่มีอักขระยูนิโค้ดที่ตรงกับตัวอักษรตัวสุดท้ายของคำ วิธีนี้จะแก้ไขปัญหาเกี่ยวกับคำที่ไม่ได้เป็นพหูพจน์ด้วย "s"

mouse$ vs mic€

การประชุมการตั้งชื่อเหล่านี้ไม่อยู่ในแนวทางแบบทางการของ Angular การใช้งานอย่างใดอย่างหนึ่ง (หรือไม่มี) ขึ้นอยู่กับความชอบส่วนบุคคลทั้งหมด


10
cactu $ กับcactï
BYTE RIDER

การอ้างอิงที่ดี! ตรวจสอบบทความนี้ด้วย สิ่งที่ทำให้ฉันรำคาญคือการพยายามทำสิ่งนี้ใน codebase ของฉัน (เพื่อนร่วมงานคนอื่น) และทำให้มันผิดโดยใส่คำต่อท้ายลงในตัวแปรที่ผิดหรือแย่กว่านั้นคือเริ่มตัวแปรด้วย ฉันเคยเห็นผู้คนใช้สิ่งนี้โดยไม่มีความสอดคล้องเช่นกันในกรณีนี้มันไม่สมเหตุสมผลเลย medium.com/@benlesh/…
Eric Bishard

หากคุณจะใช้ฉันจะแนะนำต่อไปนี้การประชุมการตั้งชื่อเช่นใน repo นี้: github.com/bodiddlie/rxheroes/blob/master/app/effects/hero.ts และทำมันตลอดเวลาหรือไม่ จงสอดคล้องเพื่อเห็นแก่พระเจ้าที่สังเกตได้
Eric Bishard

2
fish$vsfish€$
Martin Schneider

11

อัปเดต : https://angular.io/guide/rx-library#naming-conventions-for-observables

เนื่องจากแอปพลิเคชันเชิงมุมส่วนใหญ่จะเขียนใน TypeScript คุณมักจะรู้ว่าเมื่อใดตัวแปรที่สามารถสังเกต แม้ว่า Angular framework จะไม่บังคับใช้หลักการตั้งชื่อสำหรับสิ่งที่น่าสังเกตคุณมักจะเห็นสิ่งที่น่าสนใจที่มีเครื่องหมาย“ $” ต่อท้าย

สิ่งนี้มีประโยชน์เมื่อสแกนรหัสและค้นหาค่าที่สังเกตได้ นอกจากนี้หากคุณต้องการให้ทรัพย์สินเก็บค่าล่าสุดจากที่สังเกตได้มันจะสะดวกในการใช้ชื่อเดียวกันโดยมีหรือไม่มี“ $”


ต้นฉบับ :

ฉันเห็นตัวแปรลงท้ายด้วย$เมื่ออ่านบทแนะนำฮีโร่อย่างเป็นทางการ:

<div id="search-component">
  <h4>Hero Search</h4>

  <input #searchBox id="search-box" (keyup)="search(searchBox.value)" />

  <ul class="search-result">
    <li *ngFor="let hero of heroes$ | async" >
      <a routerLink="/detail/{{hero.id}}">
        {{hero.name}}
      </a>
    </li>
  </ul>
</div>

มองอย่างใกล้ชิดและคุณจะเห็นว่า * ngFor iterates กว่ารายการที่เรียกว่าheroes$, ไม่วีรบุรุษ

<li *ngFor="let hero of heroes$ | async" >

$ เป็นแบบแผนที่ระบุว่าฮีโร่ $ เป็นแบบสังเกตได้ไม่ใช่อาร์เรย์

กรณีส่วนใหญ่คือเราไม่ได้สมัครสมาชิกตัวแปรสังเกตได้ในองค์ประกอบ เรามักจะใช้ AsyncPipe เพื่อสมัครสมาชิกตัวแปร Observable โดยอัตโนมัติ

ฉันไม่พบใน Style Guide เนื่องจาก Angular5.1 เปิดตัวเมื่อวาน (6 ธันวาคม 2017)


จากไกด์นำเที่ยวสไตล์ Angular 9heroes: Observable<Hero[]>;
Ricardo Saracino

9

ฉันไม่ได้เห็นสิ่งนี้$ในคู่มือแนะนำสไตล์ แต่ฉันเห็นว่ามันถูกใช้บ่อยสำหรับคุณสมบัติสาธารณะที่อ้างถึงสิ่งที่สามารถสังเกตได้ซึ่งสามารถสมัครเป็นสมาชิกได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.