- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi mới làm quen với lập trình Android (~ 2 tháng). Có cần thiết phải đặt getters cho hàng tá biến khác nhau không?
Ví dụ--
// Vâng, tôi nhận ra rằng đây không phải là 'hàng tá'
phao công khai getX() {
trả về vị trí.x;
}
phao công khai getY() {
trả về vị trí.y;
}
phao công khai getWidth() {
chiều rộng trở lại;
}
phao công khai getHeight() {
chiều cao trở lại;
}
phao công khai getRotation() {
quay trở lại;
}
Ví dụ: mặc dù cần phải sử dụng các getters và setters khác nhau cho số float và chuỗi, nhưng việc sử dụng thứ gì đó như câu lệnh switch để trả về các biến khác nhau có phải là một cách làm không tốt không? Nếu vậy thì tại sao điều này lại xảy ra?
public float returnSomething(String theThing) {
chuyển đổi (theThing) {
trường hợp "chiều cao":
chiều cao trở lại;
trường hợp "xoay":
quay trở lại;
trường hợp "chiều rộng":
chiều rộng trở lại;
default:
return 0;
}
}
Vì vậy, đoạn mã trên có bị coi là sai không? Nếu vậy, hãy giải thích tại sao.
Cảm ơn sự giúp đỡ, đây thực sự không phải là vấn đề vì cả hai cách tiếp cận đều sẽ hoạt động tốt, tôi chỉ không hiểu tại sao mọi người lại sử dụng hàng tá getters và setters mà không có lý do chính đáng.
Tôi đoán vấn đề tương tự cũng áp dụng cho người định cư
câu trả lời hay nhất
Bởi vì khi bạn làm điều gì đó như
public float returnSomething(String theThing) {
chuyển đổi (theThing) {
trường hợp "chiều cao":
chiều cao trở lại;
trường hợp "xoay":
quay trở lại;
trường hợp "chiều rộng":
chiều rộng trở lại;
default:
return 0;
}
}
Tôi có thể cảm nhận được câu hỏi tiếp theo trên Stack Overflow,"Tại sao chiều cao của tôi luôn bằng 0?"
Sau đó đăng mã như thế này
lớp công khai GameThingy {
//...
khoảng trống riêng tư doStuff(GameObject gameObject) {
trọng lực nổi = 5*gameObject.returnSomething("hieght");
gameObject.setSomething("vận tốc", trọng lực+50);
}
}
Về mặt kỹ thuật, một khi bạn mắc lỗi đánh máy ở bất kỳ đâu, bạn sẽ gặp khó khăn trong việc tìm ra nguồn gốc của vấn đề. Chà, bạn thật may mắn, những lĩnh vực này float
, họ không cần phải như vậy.
biên tập: Nhân tiện, đây thực sự là một vấn đề điển hình khi xác định các trường quan tâm trong một số truy vấn cơ sở dữ liệu. Giống như, phải vượt qua String
Chỉ định trường bạn muốn tìm.
Ví dụ thực tế cuộc sống là Vương quốc
.
MỘT Vương quốc
看起来像这样:
RealmQuery query = Realm.where(User.class);
//Thêm điều kiện truy vấn:
query.equalTo("name", "John");
// Thực hiện truy vấn:
RealmResults result1 = query.findAll();
họ học lớp ở đâu User
是这样的:
lớp công khai Người dùng {
tên chuỗi riêng tư;
Chuỗi công khai getName() {
trả lại tên;
}
public void setName(Tên chuỗi) {
this.name = tên;
}
}
Một lưu ý thú vị là Realm tạo một "lớp con proxy" nơi họ xác định lại tên tập hợp
Và lấy tên
Các phương thức (hay còn gọi là bạn cần getters/setters để làm cho một số hệ thống hoạt động! Họ cho rằng bạn có chúng!)
Nhưng điều quan trọng ở đây là bạn cần cung cấp tên trường "name"
.
Sau đó,Bất cứ ai cũng có thể mắc lỗi đánh máy, hoặc bạnNhững trường này sẽ không được ghi nhớ. Trong trường hợp cụ thể này, họ có xu hướng tạo ra mộtsiêu mẫu(thứ gì đó lưu trữ tên trường cho bạn) để bạnKhông cần sử dụng chuỗiđể tham chiếu tên trường.
Ví dụ: trong API tiêu chí, thay vì
Root pet = cq.from(Pet.class);
cq.select(pet.get("tên"));
Họ có mô hình meta này:
Root pet = cq.from(Pet.class);
cq.select(pet.get(Pet_.name));
Vì vậy, nó loại bỏ String
nhu cầu
Một lần nữa, tôi có xu hướng sử dụng Realm để tạo một "siêu mô hình" (mặc dù bây giờ bạn có thể sử dụng Trình trợ giúp RealmFieldNames tự động tạo nó cho bạn):
public class User
mở rộng RealmObject {
@PrimaryKey
id dài riêng tư;
tên chuỗi riêng tư;
Các trường enum tĩnh công khai { // đây là "siêu mô hình"
ID("id"),
TÊN("tên");
tên trường chuỗi riêng tư;
Các trường(Tên trường chuỗi) {
this.fieldName = fieldName;
}
Chuỗi công khai getField() {
trả về tên trường;
}
@Ghi đè
Chuỗi công khai toString() {
trả về getField();
}
}
}
Vì vậy, bạn có thể thay thế truy vấn như thế này
RealmResults result2 = Realm.where(User.class)
.equalTo(User.Fields.NAME.getField(), "John")
.hoặc()
.equalTo(User.Fields.NAME.getField(), "Peter")
.findAll();
Nhưng với getters và setters, bạn đã có sự an toàn về kiểu và bạn đã có các phương thức mà bạn không cần phải nhớ - vì vậy bạn phải kiểm tra lỗi trong thời gian biên dịch.
Vì vậy, để trả lời câu hỏi của bạn, lý do việc tham chiếu một biến theo tên chuỗi trong Java là một cách làm không tốt là vì
1.) Lỗi chính tả có thể xảy ra, lỗi chỉ xảy ra ởthời gian chạy, thay vì thời gian biên dịch
2.)它gõ không an toàn;bạn thật may mắn khi nhận đượcfloat
Mặt sau của nó không quan trọng trong ví dụ này, nhưng bây giờ nó có thể String
, bạn cần quay lại Object
và chuyển đổi hoặc sử dụng công khai
Và bất cứ ai gọi phương thức này đều phải biết chính xác những gì họ đang nhận được - cũng dễ xảy ra lỗi thời gian chạy.
Về Java - Các phương pháp hay nhất cho setter/getters, setter/getter đơn hoặc nhiều setter/getters cho các biến khác nhau? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/31517799/
Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud "Đào tạo phân tán LLM mô hình lớn", tác giả: Hua Shanghua_Lancer. Với sự tăng trưởng nhanh chóng về số lượng tham số mô hình ngôn ngữ và dữ liệu đào tạo cần thiết, nguồn lực hạn chế trên một máy không còn có thể đáp ứng yêu cầu đào tạo mô hình ngôn ngữ lớn. Cần thiết kế đào tạo phân tán
Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud "Năm thuật toán cơ bản-Phương pháp lập trình động", tác giả: Daikin (đến từ Nội Mông). 1. Khái niệm cơ bản của quy hoạch động rất giống với phương pháp chia để trị. Điểm khác biệt là khi giải một bài toán con, lời giải của bài toán con đó sẽ được lưu lại và có thể sử dụng trực tiếp khi giải các bài toán con tiếp theo.
pip install scp pip install pexpect Mã kiểm tra: import os import stat import paramiko # Dùng để gọi lệnh scp def s
Tôi hiện đang triển khai dịch vụ REST "mã thông báo". Mã thông báo chỉ là một chuỗi được xây dựng từ một số tham số, sau đó được băm và hết hạn sau một khoảng thời gian nhất định. Tôi muốn có điểm cuối trong dịch vụ REST có thể xác minh mã thông báo,
Khi bật tính năng xóa mềm, tôi thêm bản ghi trên máy khách, Đẩy, xóa bản ghi đã thêm, sau đó thử thêm bản ghi mới (và sau đó Đẩy) bằng cùng khóa chính với bản ghi ban đầu, tôi nhận được một ngoại lệ. Thực thểDomainManager
Khi bật tính năng xóa mềm, tôi thêm bản ghi trên máy khách, Đẩy, xóa bản ghi đã thêm, sau đó thử thêm bản ghi mới (và sau đó Đẩy) bằng cùng khóa chính với bản ghi ban đầu, tôi nhận được một ngoại lệ. Thực thểDomainManager
Tôi có một ứng dụng nhận thông tin thời tiết cứ sau x giây. Tôi muốn lưu dữ liệu này vào tệp XML. Tôi có nên tạo tệp XML mới cho mỗi thông báo thời tiết hay nối thêm từng thông báo vào cùng một tệp XML không? Tôi không chắc chắn về tiêu chuẩn XML
Tôi đoán hầu hết chúng ta đều phải đối mặt với vấn đề này vào một lúc nào đó, vì vậy tôi nghĩ tôi sẽ hỏi. Khi bạn có nhiều bộ sưu tập trong BLL của mình và bạn thấy mình viết đi viết lại cùng một vị từ nội tuyến (ẩn danh) cũ, thì việc đóng gói rõ ràng là cần thiết, nhưng cách tốt nhất để đạt được điều đó là
Tôi có một số mã C# đã chạy được một thời gian.. Tôi phải nói rằng mặc dù tôi hiểu những điều cơ bản về nguyên tắc OO nhưng rõ ràng có nhiều cách để lột da một con mèo (mặc dù tôi ghét cụm từ đó!). Vì vậy, tôi có một lớp trừu tượng cơ bản là lớp dịch vụ dữ liệu cơ bản như sau
Tôi đang thiết kế một hệ thống cơ sở dữ liệu SQL (sử dụng Postgre) và tôi có một câu hỏi, cách phổ biến để tạo mối quan hệ/tham chiếu vẫn tồn tại ngay cả khi đối tượng được tham chiếu bị xóa. Ví dụ: có UserORM và Act
Mục tiêu của chúng tôi là tìm kiếm một chuỗi do người dùng nhập và đếm xem có bao nhiêu nguyên âm được tìm thấy trong đó. Thật không may, tôi bị kẹt ở đây, có ai giúp được không? def numVowels(s): nguyên âm= "AEIOUaeiou" if s
Tôi có chức năng xoay hoạt động trên mảng int "mục" của mình. Mã bên dưới thực hiện điều đó ngoại trừ việc tôi chuyển giá trị một cách không cần thiết. Tôi đang cố gắng thực hiện xoay vòng "tại chỗ". Ý tôi là ptrs sẽ được tăng hoặc giảm thay vì lấy giá trị từ mảng. Tôi cần cách này
Tôi có một json được lưu trữ trong thư mục tài liệu ứng dụng của mình và tôi cần sử dụng nó trong tất cả các Chế độ xem của mình. Tôi đang tải json và thêm nó vào NSMutableArray trong mỗi Chế độ xem. Nhưng bây giờ tôi hiểu rằng tôi có thể
Tôi đã bắt đầu một dự án bằng C++. Quản lý bộ nhớ bằng ngôn ngữ này là điều mới mẻ đối với tôi. Tôi đã từng tạo đối tượng bằng cách sử dụng new() rồi truyền con trỏ, và trong khi nó hoạt động, việc gỡ lỗi rất khó khăn và mọi người sẽ nhìn tôi buồn cười khi họ nhìn thấy mã. Tôi không có nó
Đã kết thúc. Câu hỏi này lạc đề. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Cập nhật câu hỏi để nó có chủ đề Stack Overflow. Đóng cửa 10 năm trước. Cải thiện điều này
Giữ các lớp được liên kết lỏng lẻo là một khía cạnh quan trọng của việc viết mã dễ hiểu, sửa đổi và gỡ lỗi - tôi hiểu rồi. Tuy nhiên, là một người mới, tôi hầu như luôn vượt quá ví dụ đơn giản nhất mà tôi đang gặp khó khăn. Tôi ít nhiều hiểu cách đóng gói chuỗi, số nguyên và các kiểu dữ liệu đơn giản
Tôi thấy rằng tôi cần phải viết nhiều mã trùng lặp vì tôi không thể gọi các hàm từ Bộ điều khiển khác. Ví dụ: ở đây nội dung nguồn cấp tin tức được lặp lại trong mã của tôi, tôi thực hiện một số việc cụ thể cho Bộ điều khiển và sau đó cần tải nguồn cấp tin tức của mình như thế này
Giả sử bạn cần một kiểu dữ liệu số cho phép các giá trị trong một phạm vi xác định. Cụ thể hơn, giả sử bạn muốn xác định một loại số nguyên có giá trị tối thiểu là 0 và giá trị tối đa là 5000. Tình trạng này xảy ra trong nhiều tình huống, chẳng hạn như khi lập mô hình các kiểu dữ liệu cơ sở dữ liệu, kiểu dữ liệu XSD. hiện hữu
Giả sử tôi muốn lặp qua toàn bộ mảng để truy cập từng phần tử. Đây có phải là thông lệ tiêu chuẩn để các nhà phát triển JavaScript sử dụng vòng lặp for, vòng lặp for...in hoặc vòng lặp for...of không? Ví dụ: var myArray = ["app
Tôi có một ứng dụng SL4/ria cũ mà tôi muốn thay thế bằng Breeze. Tôi có câu hỏi về việc sử dụng bộ nhớ và bộ nhớ đệm. Ứng dụng của tôi tải danh sách công việc (một người dùng thông thường có quyền truy cập vào khoảng 1.000 công việc này). Ngoài ra còn có rất nhiều
Tôi là một lập trình viên xuất sắc, rất giỏi!