Если вы используете Java 1.7, вы можете использовать java.nio.file.Files.walkFileTree(...)
.
Например:
public class WalkFileTreeExample {
public static void main(String[] args) {
Path p = Paths.get("/usr");
FileVisitor fv = new SimpleFileVisitor() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
};
try {
Files.walkFileTree(p, fv);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Если вы используете Java 8 , вы можете использовать интерфейс потока с помощью java.nio.file.Files.walk(...)
:
public class WalkFileTreeExample {
public static void main(String[] args) {
try (Stream paths = Files.walk(Paths.get("/usr"))) {
paths.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Используйте T4MVC , чтобы удалить все магические строки и магические анонимные типы во всем вашем проекте. Это поможет вам в дальнейшем рефакторинге вашего проекта, и (помимо необходимости по-прежнему гарантировать, что ваши маршруты четко определены) все вызовы Action получают свои правильные параметры. Он меняет вызовы следующим образом:
<%= Html.ActionLink("Link text", "Products", "Details", new { id = Model.Id }) %>
В:
<%= Html.ActionLink("Link text", MVC.Products.Details(Model.Id)) %>
Не допускайте попадания любой логики в поле зрения. Контроллер должен определять, что будет отображаться - ваше представление должно быть тупым.
объектов ViewModel DTO:
Абстрактный класс BaseViewModel со свойствами для отображения метаданных страницы, меню и всего остального, что появляется на каждой странице. Все остальные классы ViewModel наследуются от BaseViewModel.
Хотя этот сайт не является сайтом с лучшими практиками, он отлично работает с asp.net MVC, что, вероятно, можно было бы считать передовым методом.
Для книги «MVC в действии» доступны 2 бесплатные главы.
http://www.manning.com/palermo/
Глава 12. Передовой опыт.
Делайте контроллеры как можно более «тонкими». Просто попросите их проверить данные, поступающие из формы, а затем вызвать модель (которая выполняет всю реальную работу), чтобы получить данные, которые будут возвращены в вашем следующем представлении.
Наличие сложных контроллеров как бы нарушает концепцию MVC.