Xem Nhiều 6/2023 #️ Một Số Nguyên Tắc, Định Luật Trong Lập Trình # Top 9 Trend | Tvzoneplus.com

Xem Nhiều 6/2023 # Một Số Nguyên Tắc, Định Luật Trong Lập Trình # Top 9 Trend

Cập nhật thông tin chi tiết về Một Số Nguyên Tắc, Định Luật Trong Lập Trình mới nhất trên website Tvzoneplus.com. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất.

Bài viết được sự cho phép của tác giả Giang Phan

Ở bài trước tôi đã giới thiệu với các bạn các bạn Các nguyên tắc thiết kế hướng đối tượng – SOLID. Trong bài này, tôi sẽ giới thiệu với một số nguyên tắc, định luật trong lập trình mà các bạn nên biết để phát triển chương trình của bạn tốt hơn.

Giới thiệu

The Law of Demeter Principle – LoD, còn gọi khác là nguyên tắc Demeter hay nguyên tắc “càng biết ít càng tốt” hay nguyên tắc “Một dấu chấm”. Nó là một nguyên tắc thiết kế để phát triển phần mềm, đặc biệt là các chương trình hướng đối tượng.

LoD là một triết lý nền tảng của việc lập trình được sinh ra từ một aspect-oriented programming (AOP) project cùng tên, là một trường hợp cụ thể của khớp nối lỏng lẻo (loose coupling).

LoD còn được gọi là nguyên tắc “Một dấu chấm”, nghĩa là không nên gọi quá nhiều dấu chấm (lời gọi hàm), là 1 code smell và sẽ dẫn đến việc code rất dễ vỡ khi có thay đổi.

Quan điểm cơ bản của nguyên tắc này chính là : tối giản sự hiểu biết của 1 object về cấu trúc, thuộc tính của các object khác ngoài nó (bao gồm các thành phần con).

https://en.wikipedia.org/wiki/Law_of_Demeter

Vì sao phải tuân theo LoD?

Giả sử bạn có một đoạn code sau:

store.getOrder().getCustomer().getBillingAddress().getCity();

Như bạn thấy đoạn code trên không có vấn đề gì. Tuy nhiên, nó vi phạm LoD và có thể gây chút phiền phức cho chúng ta sau này:

store về sau có thể sẽ không truy cập BillingAddress qua Customer, Order nữa.

Phương thức getCity() trong BillingAddress có thể sẽ không còn tồn tại.

Có thể sẽ gặp lỗi: NullPointerException, MethodNotFoundException nếu bất kỳ object order, customer, hay BillingAddress bị null.

Khi đóng gói Store để tái sử dụng, cũng cần phải đóng gói cả Order, Customer, BillingAddress. Khi đó, sự phụ thuộc lẫn nhau giữa các thành phần trong hệ thống tăng cao (tightly coupled).

Ưu điểm và nhược điểm của LoD

Cái gì thì có cũng mặt tốt và mặt xấu của nó cả, việc tuân theo LoD cũng vậy. Tùy theo trường hợp thích hợp hãy áp dụng để có được kết quả tốt nhất.

Lợi ích:

Class sẽ loosely coupled hơn, những thành phần trong hệ thống sẽ ít phụ thuộc vào nhau hơn.

Dễ dàng đóng gói và tái sử dụng.

Việc test, bảo trì sẽ dễ dàng hơn.

Bất lợi:

Viết nhiều phương thức, class wrapper hơn để có thể gọi được phương thức cần sử dụng.

Thật khó để tuân theo các quy tắc thiết kế này, nhưng một khi hiểu chúng đúng cách, nó sẽ mang đến cho chúng ta lợi ích rất nhiều.

Định luật Brook

Đây là một định luật dựa trên kinh nghiệm thực tế : “Đưa thêm người vào 1 project đang chậm, sẽ chỉ khiến nó càng chậm hơn.”

Hay có thể nói theo một cách khác nữa là “Tập hợp 9 bà bầu lại cũng không thể khiến đứa trẻ ra đời sau 1 tháng.”

Luận thuyết cơ bản của định luật này là

Cần thời gian để quen với project

Công sức dành cho việc communication sẽ tăng

http://en.wikipedia.org/wiki/Brooks’s_law

Định luật Conway

“Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”

“Một công ty thiết kế hệ thống thế nào cũng sẽ làm ra những thiết kế giống y hệt với thiết kế hệ thống của chính công ty họ.”

http://en.wikipedia.org/wiki/Conway’s_law

Nghiên cứu gần đây chỉ ra rằng hệ thống của công ty là nhân tố ảnh hưởng lớn nhất đến vấn đề phát sinh ra bug của sản phẩm.

http://research.microsoft.com/apps/pubs/default.aspx?id=70535

Nguyên tắc bất ngờ nhỏ nhất (least astonishment)

Trong trường hợp trên cùng 1 interface có 2 yếu tố hành xử mâu thuẫn với nhau, hoặc cách hành xử không rõ ràng thì cần phải chọn cách hành xử nào gây bất ngờ ít nhất cho người sử dụng.

http://en.wikipedia.org/wiki/Principle_of_least_astonishment

Đây là 1 nguyên tắc về giao diện người dùng. Một ví dụ đơn giản :

Trên 1 interface có 2 chức năng :

Ấn ctrl+Q để thoát chương trình.

Nhập macro (lưu 1 tổ hợp phím mang 1 chức năng nào đó để tiện cho việc sử dụng về sau).

Sẽ có trường hợp user muốn dùng Ctrl+Q cho macro của mình, nên hành xử đúng với nguyên tắc bất ngờ nhỏ nhất chính là : trong khi nhập macro thì ctrl+Q được coi như là tổ hợp phím bình thường, không phải là lệnh tắt chương trình. Đây chính là điều gây bất ngờ ít nhất cho người dùng.

Nguyên tắc Boy Scout

Nguyên tắc của các tổ chức Boy scout chính là : lúc đi phải sạch đẹp hơn lúc đến.

Trong lĩnh vực lập trình thì nguyên tắc đó sẽ được hiểu là “Khi bạn check-in một module thì lúc đó nó phải đẹp hơn lúc bạn check-out.”

Nguyên tắc YAGNI

Viết tắt của “You aren’t gonna need it” – Cái (chức năng, phần) ấy rồi sẽ không cần thiết.

Đó là một câu khẩu ngữ nhắc nhở người lập trình rằng trong quy trình Extreme Programming (lập trình cực hạn) thì : “Chưa phải lúc cần thiết thì chưa được phép làm.”

http://en.wikipedia.org/wiki/YAGNI

Nguyên tắc DRY

Viết tắt của “Don’t repeat yourself” – với ý nghĩa là “Đừng lặp lại những gì giống nhau”.

http://en.wikipedia.org/wiki/Don’t_repeat_yourself

Nguyên tắc KISS

Viết tắt của “Keep it simple, stupid” – “Cứ đơn giản thôi, đồ ngu!”. Đây là 1 triết lí của Hải quân Mỹ.

http://en.wikipedia.org/wiki/KISS_principle

Những triết lý tương tự có thể kể đến là :

Phương châm dao cạo Okham (Okham’s razor) : Không đưa ra nhiều giả thiết nếu không cần thiết. Cái gì cần ít giả thiết để chứng minh sẽ không thể chứng minh được bằng nhiều giả thiết.

Albert Einstein : Làm cái gì cũng nên đơn giản nhất có thể, nhưng đơn giản quá thì không được.

Leonardo da Vinci : Đơn giản nhất chính là điêu luyện nhất.

Antoine de Saint- Exupéry : Hoàn hảo, không phải là không thêm vào được nữa, mà là không thể bớt đi được nữa.

Nguyên tắc SOLID

Tập hợp những nguyên tắc trong lập trình hướng đối tượng. Các chữ cái đầu hợp lại thành SOLID.

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

SRP (Single Responsibility Principle) : Một class chỉ nên giữ 1 trách nhiệm duy nhất, chỉ có thể sửa đổi class với 1 lý do duy nhất.

OCP (Open/closed principle) : Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó.

LSP (Liskov substitution principle) : Trong một chương trình, các object của class con có thể thay thế class cha mà không làm thay đổi tính đúng đắn của chương trình.

ISP (Interface segregation principle) : Thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể.

DIP (Dependency inversion principle) : Các module cấp cao không nên phụ thuộc vào các modules cấp thấp. Cả 2 nên phụ thuộc vào abstraction. Interface (abstraction) không nên phụ thuộc vào chi tiết, mà ngược lại. ( Các class giao tiếp với nhau thông qua interface, không phải thông qua implementation.)

Biến Số Và Hằng Số Trong Lập Trình Pascal

ngay ở tiêu đề mình cũng có thể hiểu được một phần nào ý nghĩa của biến số và hằng số. Biến số là giá trị của nó sẽ thay đổi trong quá trình chạy chương trình tùy thuộc vào từng ngữ cảnh cụ thể.1. Hằng.

1.1. Khái niệm về hằng (constant) : Hằng là đại lượng có giá trị không thay đổi trong suốt quá trình thực hiện chương trình.

trong đó là tự đặt, theo đúng quy tắc của một tên, còn giá_trị có thể là một hằng hoặc một biểu thức mà các toán hạng đều là hằng.

max = 150; {hằng nguyên} L = False; {hằng logic} A = (5*7)/4; {hằng thực} ch =’Y’; {hằng ký tự}

Ho = ‘Viet Nam’; {hằng chuỗi}

Writeln(‘Diện tích hình tròn bán kính r = 5 là : ‘,pi*5*5:8:3);Không đặt tên biến hay tên hàm trùng với các hằng số có sẵn trong Pascal.

2.1. Khái niệm về biến (variable) : Biến là đại lượng có giá trị thay đổi được trong chương trình. Mỗi biến phải thuộc về một kiểu dữ liệu nhất định và phải được khai báo trước. Việc khai báo có tác dụng báo cho máy dành sẵn các ô nhớ thích hợp trong bộ nhớ để sẵn sàng chứa dữ liệu.

Biến ten ở ví dụ trên chứa một dãy không quá 7 ký tự. Ta nói biến ten có độ dài 7 byte. Biến String khai báo tối đa là String[255].

Một biến String (chuỗi, sâu ký tự) được cấp một số byte bằng độ dài của nó cộng thêm 1. Byte đầu tiên dùng để ghi số ký tự đang được lưu trữ, mỗi byte còn lại chứa một ký tự.

Có thể vừa khai báo vừa khởi đầu (gán giá trị) cho các biến theo cách sau :

Chú ý phân biệt x và y : x là hằng thực, y là biến thực. Trong chương trình có thể thay đổi giá trị của y nhưng không thể thay đổi giá trị của x.

3. Các loại biến, phạm vi của biến.

3.1 Biến toàn cục.

3.2 Biến cục bộ.

4. Tham biến và tham trị.

4.1 Tham biến.

4.2 Tham trị.

Bàn Về Các Nguyên Tắc Pháp Luật Chung Trong Luật Quốc Tế

[1]        Đỗ Hòa Bình (chủ biên), Thuật ngữ Luật Quốc tế, Nxb. Chính trị Quốc gia, 2016 [trans: Do Hoa Binh (ed.), International Law Terms, National Political Publishing House, 2016]

[2]        Lê Văn Bính, “Tiệm cận các quy phạm Luật Quốc tế”, Tạp chí Khoa học, Kinh tế/ Luật (ĐH Quốc gia Hà Nội), 24, 2008 [trans: Le Van Binh, “Approaching international law norms”, Journal of Science, Ha Noi National University, Economics – Law 24, 2008]

[3]        Cheng, Bin, General Principles of Law as Applied by International Courts and Tribunals, reprinted, Cambridge 1987

[4]        Marija Đorđeska, “General principles of law – judicial theory or everyday practice of international courts?”, http://www.nowyjorkonz.msz.gov.pl/resource/3af82202-d042-4760-bce3-2c60dff95593:JCR, access on 31/10/2017

[5]        Aaron X Fellmeth và Maurice Horwitz, Guide to Latin in International Law, Oxford, 2009

[6]        Garner, Bryan (ed.), Black”s Law Dictionary, 8th edition, St. Paul, Thomson/West, 2004

[7]        International Law Being the Collected Papers of Hersch Lauterpacht, (E. Lauterpacht (ed.)), The General Works, Vol. I, 68-86 (definition of General Principles on pg 69-70)

[8]        Neha Jain, “Judicial Lawmaking and General Principles of Law in International Criminal Law”, Harvard International Law Journal , Vol. 57, 2016

[9]        Hersch Lauterpacht, The Development of International Law by the International Court 166, 1958

[10]     Hermann Mosler, General Principles of Law, Encyclopedia of Public International Law, Elsevier, Amsterdam, 1999

[11]     Maria Panezi, “Sources of Law in Transition: Re-visiting General Principles of International Law”,.http://www.anci.ch/_media/beitrag/ancilla2007_66_panezi_sources.pdf, access on 31/10/2017

[12]     Maria Panezi, “Sources of Law in Transition: Re-visiting General Principles of International Law”,.http://www.anci.ch/_media/beitrag/ancilla2007_66_panezi_sources.pdf, access on 31/10/2017

[13]     Schlesinger, Rudolf B., Research on the General Principles of Law Recognized by Civilized Nations, 51 AM. J. INT”L L. 734, 739, 1957

[14]     Trần Văn Thắng, Lê Mai Anh (chủ biên), Luật Quốc tế – Lý luận và thực tiễn, Nxb. Giáo dục, 2001 [trans: Tran Van Thang, Le Mai Anh, (ed.), International Law – Theory and Practices, Education Publishing House, 2001]

[15]     The International Institute for Sustainable Development, “Exhaustion of Local Remedies in International Investment Law”, 2017, https://www.iisd.org/sites/default/files/publications/best-practices-exhaustion-local-remedies-law-investment-en.pdf, access on 31/10/2017

[16]     Trường ĐH Luật Hà Nội, Giáo trình Luật Quốc tế, Nxb. Công an Nhân dân, 2012 [trans: Ha Noi Law University, Textbook on International Law, People”s Public Security Publishing House , 2012]

[17]     Trường ĐH Luật TP. Hồ Chí Minh, Giáo trình Công pháp quốc tế, Quyển 1, Nxb. Hồng Đức, 2013 [trans: Ho Chi Minh City University of Law, Textbook on Public International Law, Episode 1, Hong Duc Publishing House, 2013]

[18]     Raimondo Uva, “General Principles of Law in the Decisions of International Criminal Courts and Tribunals, PHD Thesis, University of Amsterdam, http://hdl.handle.net/11245/2.52732, access on 31/10/2017

Định Nghĩa &Amp; Các Nguyên Tắc Trong Bảo Hiểm

2. Theo Monique Gaullier: Bảo hiểm là một nghiệp vụ qua đó, một bên là người được bảo hiểm cam đoan trả một khoản tiền gọi là phí bảo hiểm thực hiện mong muốn để cho mình hoặc để cho người thứ ba trong trường hợp xảy ra rủi ro sẽ nhận được một khoản đền bù các tổn thất được trả bởi một bên khác: đó là người bảo hiểm. Người bảo hiểm nhận trách nhiệm đối với toàn bộ rủi ro và đền bù các thiệt hại theo các phương pháp của thống kê.

3. Tập đoàn bảo hiểm AIG của Mỹ định nghĩa: Bảo hiểm là một cơ chế, theo cơ chế này, một người, một doanh nghiệp hay một tổ chức chuyển nhượng rủi ro cho công ty bảo hiểm, công ty đó sẽ bồi thường cho người được bảo hiểm các tổn thất thuộc phạm vi bảo hiểm và phân chia giá trị thiệt hại giữa tất cả những người được bảo hiểm.

4. Luật Kinh doanh bảo hiểm của Việt Nam (2000): Kinh doanh bảo hiểm là hoạt động của doanh nghiệp bảo hiểm nhằm mục đích sinh lợi, theo đó doanh nghiệp bảo hiểm chấp nhận rủi ro của người được bảo hiểm, trên cơ sở bên mua bảo hiểm đóng phí bảo hiểm để doanh nghiệp bảo hiểm trả tiền bảo hiểm cho người thụ hưởng hoặc bồi thường cho người được bảo hiểm khi xảy ra sự kiện bảo hiểm.

Bản chất của bảo hiểm: Là việc phân chia tổn thất của một hoặc một số người cho tất cả những người tham gia bảo hiểm cùng chịu. Bảo hiểm hoạt động dựa trên Quy luật số đông (the law of large numbers)

– Người được bảo hiểm cùng lúc có quyền nhận quyền lợi bảo hiểm từ nhiều hợp đồng bảo hiểm con người khác nhau.

+ Trường hợp không có rủi ro loại trừ: Một người có tham gia bảo hiểm trong khi băng qua đường bị xe cán và chết. Việc đâm xe dẫn đến chết người này là nguyên nhân gần nhất và công ty bảo hiểm phải chịu trách nhiệm giải quyết quyền lợi bảo hiểm.

+ Trường hợp có rủi ro loại trừ: Một bình khí a-xê-ty-len dùng để hàn bị nổ và bắt lửa sang một cửa hàng sửa chữa xe máy. Cửa hàng này và các vật dụng bên trong được bảo hiểm trong hợp đồng bảo hiểm cháy. Bình khí a-xê-ty-len được dùng cho mục đích thương mại (không phải phục vụ mục đích sinh hoạt). Do đó vụ nổ bình khí này là một rủi ro loại trừ. Rủi ro này xảy ra trước một rủi ro khác là “cháy” (rủi ro được bảo hiểm) thì công ty bảo hiểm sẽ không chịu trách nhiệm cho bất cứ tổn thất nào gây ra bởi hoả hoạn. Tuy nhiên, nếu vụ nổ bình khí a-xê-ty-len xảy ra sau vụ hoả hoạn nào đó thì công ty bảo hiểm sẽ phải chịu trách nhiệm cho tổn thất cháy trước khi xảy ra vụ nổ.

– Chuỗi các sự kiện gián đoạn

Khi có một chuỗi các sự kiện gián đoạn thì nguyên nhân gần nhất của tổn thất là nguyên nhân xảy ra ngay sau sự gián đoạn cuối cùng. Ví dụ: Người được bảo hiểm tham gia hợp đồng bảo hiểm tai nạn cá nhân. Trong khi đi thuyền qua một con sông, không may anh ta ngã xuống sông. Cùng lúc đó, anh ta bị một cơn đau tim và sau đó đã bị chết đuối. Trong trường hợp này, việc chết đuối là nguyên nhân gần nhất chứ không phải việc đau tim vì có một sự gián đoạn trong chuỗi các sự cố giữa cơn đau tim và việc chết đuối. Công ty bảo hiểm sẽ chịu trách nhiệm thanh toán các quyền lợi mà người này được hưởng theo hợp đồng bảo hiểm tai nạn cá nhân.

Bạn đang xem bài viết Một Số Nguyên Tắc, Định Luật Trong Lập Trình trên website Tvzoneplus.com. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!