Skip to main content

Áp dụng SOLID trong NestJS

NestJS cung cấp kiến trúc module cho phép các nhà phát triển có thể tái sử dụng và kiểm tra được code. NestJS cũng hỗ trợ TypeScript, cung cấp khả năng kiểm tra kiểu tĩnh và IntelliSense để các developer có năng suất tốt hơn. NestJS được xây dựng dựa trên Express, một framework web phổ biến cho Node.js. NestJS cũng cung cấp CLI mạnh mẽ giúp dễ dàng tạo project, modules, controllers và services. NestJS là framework Node.js được sử dụng để xây dựng các ứng dụng có thể mở rộng và bảo trì. Nó dựa trên các nguyên tắc lập trình hướng đối tượng và các mẫu thiết kế, bao gồm các nguyên tắc SOLID. S.O.L.I.D là từ viết tắt đại diện cho 5 nguyên tắc thiết kế trong phát triển phần mềm. Những nguyên tắc này được Robert C. Martin (còn được gọi là Bác Bob) giới thiệu như những hướng dẫn để tạo ra các hệ thống phần mềm linh hoạt và có thể bảo trì. Mỗi chữ cái trong từ viết tắt tương ứng với một nguyên tắc cụ thể: S - Single Responsibility Principle (SRP) : Nguyên tắc này nêu rõ rằng một lớp hoặc mo...

Java là gì?

Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm 1995. Nó được xây dựng trên nền tảng của C và C++ nghĩa là Java sử dụng cú pháp của C và đặc trưng hướng đối tượng của C++. Java là ngôn ngữ vừa biên dịch vừa thông dịch.


Một số đặc trưng của Java:

Đơn giản: Những người thiết kế Java mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số lập trình viên. Java loại bỏ các phức tạp của C và C++.

  • Loại bỏ con trỏ, thao tác định nghĩa chồng toán tử (operator overloading)...
  • Không cho phép đa thừa kế (multi-inheritance) mà sử dụng các giao diện (interface).
  • Không sử dụng lệnh goto cũng như file header (.h).
  • Loại bỏ cấu trúc "struct" và "union".

Hướng đối tượng: Java là  ngôn ngữ hoàn toàn hướng đối tượng. Mọi thực thể trong hệ thống đều coi là một đối tượng, nghĩa là một thể hiện cụ thể của một lớp xác định. Tất cả các chương trình đều nằm trong một lớp (class) nhất định. Và hơn thế nữa Java không cho phép định nghĩa dữ liệu và hàm tự do trong trương trình.

Độc lập phần cứng và hệ điều hành:

  • Các chương trình viết bằng java có thểchạy trên hầu hết các hệnền mà không cần phải thay đổi gì, điều này đã được những người lập trình đặt cho nó một khẩu hiệu ‘viết một lần, chạy mọi nơi’, điều này là không thể có với các ngôn ngữ lập trình khác.
  • Đối với các ngôn ngữ lập trình như C & C++ với mỗi nền phần cứng khác nhau thì sẽ có một trinh biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng. Do đó, khi chạy trên nền khác thì phải biên dịch lại mã nguồn.
  • Đối với chương trình viết bằng Java, trình biên dịch Javac sẽ biên dịch mã nguồn thành dạng bytecode. Sau đó khi chạy chương trình trên các nền phần cứng khác nhau, máy ảo Java dùng trình thông dịch Java để chuyển mã bytecode thành dạng chạy được trên các nền phần cứng tương ứng.

Mạnh mẽ: 

  • Kiểu dữ liệu phải được khai báo tường minh.
  • Không sử dụng con trỏ và phép tính con trỏ.
  • Kiểm tra việc nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước mảng.
  • Quá trình cấp phát và giải phóng bộ nhớ cho biến được thực hiện tự động nhờ vào dịch vụ thu gom những đối tượng không còn sử dụng nữa (gabage collection).
  • Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và phục hồi sau lỗi.

Bảo mật:

  • Ở mức thứ I: Dữ liệu và các phương thức được đóng gói bên trong lớp. Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp.
  • Ở mức thứ II: Trình biên dịch kiểm soát để đảm bảo mã là an toàn và tuân theo các nguyên tắc của Java.
  • Ở mức thứ III: Được đảm bảo bởi trình thông dịch. Chúng kiểm tra xem bytecode  có đảm bảo an toàn trước thực thi hay không.
  • Ở mức thứ IV: Kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống.

Phân tán:  Java hỗ trợ đầy đủ các mô hình tính toán phân tán như: client/server, RMI...

Hỗ trợ lập trình đa tuyến: Java cung cấp giải pháp lập trình đa luồng (Multi-Threading ) để thực thi công việc cùng lúc và  đồng bộ giữa các luồng.


..............................................................

Tài liệu tham khảo: Lập Trình Hướng Đối Tượng

PGS.TS. Trần Đình Quế.

KS. Nguyễn Mạnh Hùng.

Comments

Popular posts from this blog

10 điều cần biết dành cho Lập trình viên Java

Kể từ khi JAVA được công bố chính thức từ năm 1995, nó đã thay đổi rất nhiều cái nhìn của chúng ta về Hệ Điều hành. Bill Gate đã từng nói đùa rằng, nó – Hệ Điều hành – không phải là phần cứng mà là phần mềm, là tương lai. (It was not about the hardware but the software which will be the future). Một thập kỷ sau, John Gage (thành viên thứ năm của SUN) đã nói, “Mạng là máy tính” (The Network is the Computer). Và điều này đã nhanh chóng được chứng minh trong thế kỷ 21 này. Tuy nhiên, JAVA đã được xây dựng không phụ thuộc vào Hệ Điều hành và được triển khai qua mạng. JAVA với công nghệ Applet đã khai sinh cho những Ứng dụng Mạng Giàu Tương tác (Rich Network Application hay còn gọi là Rich Internet Application – RIA). JAVA không hoàn hảo và chúng ta liên tục có những bản phát hành khác nhau, tuy nhiên JAVA đã khai sinh một ngôn ngữ lập trình cực kỳ phổ biến. Trở lại với nội dung bài viết, tác giả Armel Nene (Senior Java developer với kinh nghiệm làm việc trong lĩnh vực tài chí...

Web application là gì?

Trong kỹ thuật phần mềm, một Ứng dụng web hay webapp là một trình ứng dụng mà có thể tiếp cận qua web thông qua mạng như Internet hay intranet. Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một chương trình. Khả năng cập nhật và bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó. Ứng dụng web được dùng để hiện thực Webmail, bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog, MMORPG, Hệ quản trị quan hệ khách hàng và nhiều chức năng khác. Lịch sử Trong dạng tính toán chủ-khách trước đây, mỗi ứng dụng có chương trình khách riêng của nó sẽ phục vụ như giao diện người dùng và phải được cài đặt riêng rẽ trên mỗi máy tính cá nhân của người dùng. Sự nâng cấp phần máy chủ của ứng dụng sẽ cần nâng cấp tất cả máy khách đã được cài trên mỗi máy trạm người dùng, thêm vào đó là chi phí hỗ trợ và giảm năng suất. Ngược lại, ứng dụng web linh hoạt tạo ra một loạt các tài l...

Áp dụng SOLID trong NestJS

NestJS cung cấp kiến trúc module cho phép các nhà phát triển có thể tái sử dụng và kiểm tra được code. NestJS cũng hỗ trợ TypeScript, cung cấp khả năng kiểm tra kiểu tĩnh và IntelliSense để các developer có năng suất tốt hơn. NestJS được xây dựng dựa trên Express, một framework web phổ biến cho Node.js. NestJS cũng cung cấp CLI mạnh mẽ giúp dễ dàng tạo project, modules, controllers và services. NestJS là framework Node.js được sử dụng để xây dựng các ứng dụng có thể mở rộng và bảo trì. Nó dựa trên các nguyên tắc lập trình hướng đối tượng và các mẫu thiết kế, bao gồm các nguyên tắc SOLID. S.O.L.I.D là từ viết tắt đại diện cho 5 nguyên tắc thiết kế trong phát triển phần mềm. Những nguyên tắc này được Robert C. Martin (còn được gọi là Bác Bob) giới thiệu như những hướng dẫn để tạo ra các hệ thống phần mềm linh hoạt và có thể bảo trì. Mỗi chữ cái trong từ viết tắt tương ứng với một nguyên tắc cụ thể: S - Single Responsibility Principle (SRP) : Nguyên tắc này nêu rõ rằng một lớp hoặc mo...