は、コードのこの部分を考えてみましょう:Java Reflectionは悪い練習ですか?
public void doSearch(ActionEvent event) {
String query = searchTextField.getText();
if (query.isEmpty()) {
data = FXCollections.observableArrayList(dc.getJobCoachRepo().getList());
usersTableView.setItems(data);
} else {
String searchOn = "search" + searchChoiceBox.getValue();
try {
Method m = this.getClass().getMethod(searchOn, String.class);
m.invoke(this, query);
} catch (Exception e) {
}
}
}
public void searchFirstName(String query) {
data = FXCollections.observableArrayList(dc.getJobCoachRepo().searchFirstName(query));
usersTableView.setItems(data);
}
...
...
私は、if構文を避けるためにここにJavaのリフレクションを使用しています。 choiceboxは、ユーザーが検索したい属性を決定させるために使用されます。現在、6つの可能性があります。私は、リフレクションを使うことが「悪い習慣」であるという、他の学生からのコメントを受けました。これは本当ですか?どうして?
それは非常に悪いです完全に無関係です。後で一見無邪気な変化を起こすと予期せぬ悲惨な結果を招くことがあります。 – shmosel
リフレクションの使用は悪いことではありません。 *この種のことは悪いことです。同様のIDを使っていくつかの類似したオブジェクトの中から選択したいときは、文字列から戦略オブジェクトへのマップです。 – chrylis
@shmosel必ずしも彼らが結ばれているわけではありませんが、彼らはあまりにも不透明に結ばれています。 – chrylis