Khi nào tôi nên sử dụng switch trong JavaScript?

Một trong những điều thiết yếu chúng ta làm trong lập trình là đưa ra quyết định — bạn càng làm tốt — thiết kế mã của bạn sẽ càng tốt

JavaScript có hai câu lệnh phân nhánh, ifswitch, hoặc là một quá nhiều hoặc hai là quá nhiều

switch là con lai kém của C. Một. r. Câu lệnh case của Hoare và câu lệnh GO-TO được tính toán của FORTRAN

Là họ hàng gần của câu lệnh GO-TO, [mà các nhà khoa học máy tính đã tranh luận trong 20 năm để loại bỏ khỏi các ngôn ngữ lập trình hiện đại] cũng mang lại khá nhiều vấn đề cùng với nó

xkcd

Hầu hết mọi nơi tôi thấy công tắc được sử dụng, tôi đều thấy nó bị lạm dụng. [Redux là một ngoại lệ]

vấn đề, vấn đề, vấn đề

“Trí tuệ nói rằng chúng ta chẳng là gì cả. Tình yêu nói chúng ta là tất cả. Giữa hai điều này cuộc sống của chúng tôi chảy. ”

– Jack Korfield

JavaScript có các câu lệnh luồng điều khiển khá chuẩn sử dụng các khối được xác định bởi dấu ngoặc nhọn

Có một ngoại lệ. tuyên bố switch

Câu lệnh switch cung cấp một biến chuyển đổi ngầm định nhưng có nguy cơ rơi vào sai sót có thể dẫn đến lỗi và thực tiễn xấu

Điều kỳ lạ về switchbreak phải được đưa vào cuối mỗi trường hợp để ngăn quyền kiểm soát chuyển sang trường hợp tiếp theo

Trừ khi bạn nói rõ ràng là không với break, quyền kiểm soát sẽ tự động chuyển sang hoặc chuyển sang trường hợp tiếp theo. Điều này cho phép chúng tôi chạy đồng thời nhiều trường hợp

Mọi thứ trong cuộc sống không phải lúc nào cũng diễn ra theo cách chúng ta muốn - Và điều đó thật đau lòng

Tất cả chúng ta đã ở đó

Bạn nhất định phạm sai lầm ở những nơi bạn không nên mắc lỗi

Cũng giống như dấu chấm phẩy tùy chọn và dấu ngoặc nhọn, có thể quên sử dụng break khi bạn nên có. Trong những trường hợp như vậy, lỗi rất khó xác định vì mã có vẻ đúng

Mỗi khi chúng ta viết một tuyên bố switch, chúng ta phải hết sức thận trọng

Niềm vui của việc viết mã bị giảm đi khi bạn phải hết sức thận trọng - Đây là toàn bộ vấn đề

“Switch mang lại niềm vui cho việc viết mã. Thay vì tập trung vào giải quyết vấn đề, chúng ta lại sa lầy vào các vấn đề về cú pháp. ”

Việc triển khai chuyển đổi vi phạm các nguyên tắc về sự gắn kết cao và tách biệt các mối quan tâm [SoC] đều quá phổ biến

Khi câu lệnh chuyển đổi tăng kích thước, nó sẽ thêm vào tải nhận thức

Không chỉ vậy mà còn có vấn đề về phong cách. Một trường hợp nên được liên kết với switch hoặc thụt vào?

Một số cách giải quyết có thể giảm bớt căng thẳng khi phải nhớ đặt câu lệnh ngắt, nhưng liệu chúng có xứng đáng với thời gian hay không là điều chúng ta nên xem xét

Thoát khỏi vấn đề của bạn bằng cách giải quyết chúng

“Không có gì tồn tại hoàn toàn một mình. Mọi thứ đều liên quan đến mọi thứ khác. ”

– Gautama, Đức Phật

Một đối tượng có thể được sử dụng thay thế cho câu lệnh switch

Sử dụng Object, người ta có thể thực hiện tra cứu phương thức có khóa

Tôi đã phát hiện ra switch là một giải pháp thay thế tốt hơn cho if…else, nhưng thời gian trôi qua, tôi tự nhiên bị thu hút bởi phương pháp tra cứu

Các đối tượng dễ đọc và bảo trì hơn nhiều. Chúng ta không cần phải phá thủ công từng “trường hợp. ” Họ cũng rất thân thiện với các nhà phát triển JavaScript mới

Đối tượng bạn tạo để tra cứu phương thức của mình được gọi là đối tượng hành động — Nó được sử dụng trong nhiều mẫu thiết kế phần mềm

Trong nhiều trường hợp, nó cung cấp chức năng tương tự với ít bản soạn sẵn hơn

Tra cứu phương thức khuyến khích mã được tổ chức tốt, trong khi chuyển đổi khuyến khích mã spaghetti

Chúng ta có thể đặt cùng một thứ trong một chức năng và thậm chí còn làm những việc phức tạp hơn

Bạn có thể di chuyển Cảm xúc ra bên ngoài biểu tượng cảm xúc Emoji[] — giống như phần trước. Vì vậy, chúng tôi không phải trả chi phí xây dựng cho mỗi yêu cầu

Chúng tôi đã điền vào đối tượng các hàm thực hiện hành vi cho từng trường hợp — Giá trị tương ứng với biến trường hợp là khóa

Một số người sẽ sử dụng đối tượng Bản đồ vì nó hiệu quả hơn

Bởi vì nó là vô số, đối tượng Bản đồ không phù hợp với một số mẫu bảo mật. Tôi thích WeakMap hơn vì nó không

Khi tôi bắt đầu sử dụng Object/WeakMap Lookups, tôi nghĩ rằng cuối cùng tôi đã tìm thấy một giải pháp thay thế hoàn hảo cho trường hợp chuyển đổi…

Thật không may, hình thức này cũng đi kèm với một vấn đề. ràng buộc của 'điều này'

Tất cả các ký hiệu khác trong JavaScript được liên kết tĩnh nhưng 'cái này' được liên kết động - Điều này làm cho 'cái này' trở thành nguồn gây nhầm lẫn

Nhầm lẫn là nguồn gốc của lỗi → Lỗi dẫn đến mất an toàn

tôi cảm thấy chúng ta có thể làm tốt hơn

Khớp mẫu — Một cách tiếp cận tốt hơn

Khớp mẫu là một kỹ thuật vay mượn từ các ngôn ngữ lập trình hàm cho phép bạn viết các nhánh mã có điều kiện một cách khai báo dựa trên cấu trúc của một giá trị

“Switch là hai bánh trước, Pattern-matching là toàn bộ chiếc xe. ”

Khớp mẫu mạnh mẽ hơn nhiều và ít dài dòng hơn nhiều so với các lựa chọn thay thế bắt buộc [câu lệnh if/else/switch]

Viết bằng tiên dược

Khi phân nhánh trên các cấu trúc dữ liệu phức tạp hoặc nhiều giá trị, sức mạnh thực sự của khớp mẫu sẽ được đưa ra ánh sáng

Mặc dù có một đề xuất bổ sung Khớp mẫu vào đặc tả ECMAScript, nhưng nó vẫn đang ở giai đoạn đầu và khó có thể sớm được triển khai

May mắn thay, khớp mẫu có thể được thực hiện trong vùng người dùng

  • mật thám
  • trận đấu-iz
  • mẫu ts
  • tùy chọn
  • babel-plugin-đề xuất-khớp mẫu

Sử dụng bất kỳ thư viện nào ở trên — Bạn có thể trải nghiệm triển khai khớp mẫu trong JavaScript ngay hôm nay

Redux — Một ngoại lệ

"Đơn giản là sự tinh tế cuối cùng. ”

- Leonardo da Vinci

“Tôi sử dụng Redux. Tôi chưa bao giờ gặp bất kỳ vấn đề nào”— Thực ra, tôi thích nó

Tôi biết, tôi cũng thích nó

Có một lý do khiến Redux trở nên phổ biến

Rất nhiều thứ phải làm với khả năng đơn giản hóa mọi thứ

Khả năng đơn giản hóa mọi thứ liên quan đến việc loại bỏ những thứ không cần thiết để những thứ cần thiết lên tiếng

Sau khi tôi bắt đầu sử dụng Redux, tôi đã viết nhiều câu lệnh switch

Redux vượt qua vì nó tránh được cả hai vấn đề chính với các câu lệnh switch nói chung

  • Mọi trường hợp đều trả về, không có nguy cơ trường hợp nào bị bỏ qua do bỏ qua câu lệnh ngắt
  • Viết bộ giảm tốc rất đơn giản — ít có nguy cơ phình to trường hợp [một vấn đề phổ biến khi các công tắc quản lý kiểm soát luồng ứng dụng khổng lồ]

Miễn là bạn tuân theo các quy tắc đơn giản [giữ các công tắc nhỏ và tập trung, và trả về từ mọi trường hợp với phần thân của chính nó], các câu lệnh chuyển đổi đều ổn. Khác với Redux, tôi đã không sử dụng câu lệnh chuyển đổi trong mã của mình trong vài năm

tôi không bỏ lỡ nó chút nào

Nếu bạn thấy mình đang viết một câu lệnh chuyển đổi, hãy tạm dừng và xem xét những điều sau

  • Bạn có đang cố gắng sử dụng tính năng chuyển tiếp để nhóm các đầu vào có liên quan để chúng có thể chia sẻ mã không?
  • Bạn đang đề cập đến các trường hợp của mình bằng các con số, chẳng hạn như trường hợp. 1, trường hợp. 2, vân vân?
  • Bạn sẽ cần thêm bất kỳ trường hợp nào trong tương lai?
  • Có hữu ích không khi có thể thay đổi danh sách các trường hợp trong thời gian chạy?
  • Việc ghi nhật ký các trường hợp được thực hiện có hữu ích không?

Nếu bạn trả lời có cho dù chỉ một trong các câu, tốt hơn hết bạn nên tránh sử dụng switch hoặc tính năng bỏ qua sai sót của nó trong mã của bạn

Sự kết luận

Mục đích viết bài này không phải là để thay đổi phong cách mã hóa của bạn hoặc khiến bạn ngừng sử dụng các câu lệnh chuyển đổi

Mục đích của bài viết này là để nâng cao nhận thức, cũng như mở mang đầu óc của bạn với những khả năng mới

Học tập là kho báu không trọng lượng, bạn luôn có thể dễ dàng mang theo. Tôi đã chia sẻ một số cách nhưng còn nhiều cách nữa — Hãy đi và khám phá chúng

Ghi chú của lòng biết ơn

Tôi muốn nhân cơ hội cuối cùng này để nói lời cảm ơn

Cảm ơn bạn đã ở đây. Tôi sẽ không thể làm những gì tôi làm nếu không có những người như bạn, những người luôn theo dõi và tin tưởng đọc bài đăng của tôi

Tôi hy vọng bạn sẽ tham gia cùng tôi trong bài đăng trên blog trong tương lai của tôi và tiếp tục theo dõi vì chúng tôi có điều gì đó tuyệt vời ở đây

Và tôi hy vọng tôi sẽ giúp bạn trong sự nghiệp của bạn trong nhiều năm tới

Hẹn gặp lại bạn lần sau. Từ biệt

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Tham gia cộng đồng của chúng tôi

Khi nào sử dụng switch trong JavaScript?

Từ khóa chuyển đổi JavaScript được sử dụng để tạo nhiều câu lệnh có điều kiện , cho phép bạn thực thi các khối mã khác nhau dựa trên các điều kiện khác nhau.

Khi nào tôi nên sử dụng trường hợp chuyển đổi?

Bạn có thể sử dụng switch-case khi. Có nhiều lựa chọn cho một biểu thức . Điều kiện dựa trên một tập hợp các giá trị được xác định trước, chẳng hạn như enums, hằng số, các loại đã biết. Ví dụ: mã lỗi, trạng thái, trạng thái, loại đối tượng, v.v.

Khi nào bạn nên sử dụng trường hợp chuyển đổi thay vì câu lệnh if khác?

Sự khác biệt chính giữa If-else và Switch Case . Câu lệnh if-else được sử dụng để chọn giữa hai tùy chọn, nhưng câu lệnh trường hợp chuyển đổi được sử dụng để chọn giữa nhiều tùy chọn . Nếu điều kiện bên trong khối if là sai, câu lệnh bên trong khối khác sẽ được thực thi.

Tại sao bạn lại sử dụng câu lệnh chuyển đổi?

Câu lệnh switch được sử dụng để kiểm tra sự bằng nhau của một biến đối với một số giá trị được chỉ định trong các trường hợp thử nghiệm . Java là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất hiện nay.

Chủ Đề