Tôi đang lập mô hình một hệ thống hóa học và tôi gặp vấn đề với việc đặt tên các thành phần / vật phẩm của mình trong một enum.
Tôi không chắc có nên sử dụng không:
- công thức nguyên tử
- tên hóa học
- một tên hóa học viết tắt.
Ví dụ, axit sunfuric là H2SO4 và axit clohydric là HCl.
Với hai thứ đó, tôi có lẽ sẽ chỉ sử dụng công thức nguyên tử vì chúng khá phổ biến.
Tuy nhiên, tôi có những loại khác như natri hexafluorosilicate là Na2SiF6.
Trong ví dụ đó, công thức nguyên tử không rõ ràng (với tôi) nhưng tên hóa học thì dài vô cùng : myEnum.SodiumHexaFluoroSilicate
. Tôi không chắc làm thế nào tôi có thể đến một cách an toàn với một tên hóa học viết tắt sẽ có một mẫu đặt tên nhất quán.
Có một vài vấn đề mà tôi đang cố gắng giải quyết thông qua việc đặt tên cho các yếu tố enum.
Đầu tiên là khả năng đọc, với các tên dài hơn trình bày một vấn đề.
Thứ hai là dễ dàng chọn mã cho các nhà bảo trì mới, và ở đây các tên ngắn hơn trình bày một vấn đề.
Vấn đề tiếp theo là các chủ doanh nghiệp thường đề cập đến tên hóa học đầy đủ, nhưng không phải lúc nào cũng vậy. Các hóa chất "vừa miệng" được gọi theo công thức của họ.
Mối quan tâm cuối cùng là đảm bảo nó phù hợp. Tôi không phải là một quy ước đặt tên hỗn hợp vì sẽ không thể nhớ nên sử dụng cái nào.
Từ quan điểm bảo trì, bạn muốn xem tùy chọn đặt tên nào ở trên và tại sao?
Lưu ý: Tất cả mọi thứ ở đây bên dưới dòng là bổ sung | làm rõ tài liệu. Xin đừng sa lầy vào nó. Câu hỏi chính liên quan đến việc đặt tên cho các đối tượng vụng về.
Tùy chọn nguyên tử
công khai myEnum.ChemTypes { H2SO4, HCl, Na2SiF6 }
Tùy chọn tên hóa học
công khai myEnum.ChemTypes { SulfuricAcid, Axit hydrochloric, NatriHexafluorosilicate }
Dưới đây là một số chi tiết bổ sung từ các ý kiến về câu hỏi này:
- Khán giả cho mã sẽ chỉ là lập trình viên, không phải nhà hóa học.
- Tôi đang sử dụng C #, nhưng tôi nghĩ câu hỏi này thú vị hơn khi bỏ qua ngôn ngữ thực hiện.
- Tôi bắt đầu với 10 - 20 hợp chất và sẽ có tối đa 100 hợp chất, vì vậy tôi không cần phải lo lắng về mọi hợp chất có thể. May mắn thay, đó là một miền cố định.
Enum được sử dụng làm chìa khóa để tra cứu để tạo điều kiện cho các tính toán hóa học chung / chung - có nghĩa là phương trình giống nhau cho tất cả các hợp chất nhưng bạn chèn một thuộc tính của hợp chất để hoàn thành phương trình.
- Ví dụ, khối lượng mol (tính bằng g / mol) được sử dụng khi tính số mol từ một khối lượng (tính bằng gam) của hợp chất. FWIW, Khối lượng mol == Trọng lượng mol.
- Một ví dụ khác về tính toán phổ biến là Luật khí lý tưởng và việc sử dụng hằng số khí cụ thể
Một hàm mẫu có thể trông giống như:
công khai gấp đôi GetMolesFromMass (gấp đôi mass_grams, myEnum.ChemTypes chem) { mol mol đôi = MolarightLookupFunctionByChem (chem); // trả về gram / mol nốt ruồi kép = khối lượng / mol trọng lượng; // chuyển thành nốt ruồi nốt ruồi trở lại; } // Gọi mẫu: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*hoặc là* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
công khai gấp đôi GetSpecificGravity (myEnum.ChemTypes chem, double conc) { // lấy trọng lượng riêng của hợp chất hóa học dựa trên nồng độ double sg = Cụ thểGravityLookupTableByChem (chem, conc); }
Vì vậy, enum của tên ghép được sử dụng làm khóa và để cung cấp tính nhất quán trong việc tham chiếu hợp chất với các hàm liên quan.
Substance
với bất kỳ thuộc tính nào chúng cần.