目前,我的"main()类"文件看起来有点像下面的代码.我没有将这个示例代码与//评论混为一谈,而是简单地用数字(1到4)标记了四个代码行,这些数字指的是代码后面出现的问题.谢谢.
// package myPackage; // **1** import myOtherPackage.*; class mainProject{ // **2** // **3** private int myVar; mainProject(){ myVar = 0; } public static void main(String args[]){ // Keep main() looking fairly simple? // Perhaps just have some "essentials" here, such as error handling? new mainProject().start(); // **4** } private void start(){ // The project gets going here.. } }
1 与我项目中的其他类文件不同,我没有为"main()类"文件指定包名.这是一个糟糕的设计选择吗?
2 "主类"有一个很好的命名约定吗?将"main"这个词加入到这个类名中是否有帮助?粗略地像"mainProject"这样的东西会是个好主意吗?
3 各种编码结构可以出现在主类文件中.例如,局部变量,构造函数,main()方法和本地方法.他们是否有"最佳订单",他们出现在这个文件中?
4 保持main()方法看起来相当"精简和简单"是否值得?在这个例子中,我刚刚调用了一个名为start()的本地私有方法,该方法用于启动项目.
好的,这是我在专业项目中的表现.
对于1.每个班级应该有一个包.主要或没有主要没有区别.包是java在运行时以命名空间的形式组织类的方式.因此,如果您停止提供包,那么您最终可能会在同一文件夹或jar中使用两个具有相同名称的类文件,当发生这种情况时,JVM会选择通过类路径上的名称找到的第一个类.这可能不是你想要的那个.
对于2. main(特别public static void main(String[] args)
是Java需要的特定和标准签名.任何可运行的程序,生成输出并且可以执行的程序需要具有此签名的主方法.我将尝试解释签名,这可能会有所帮助你理解为什么会这样.
它是公共的,因为您希望JVM运行时代码执行该方法.使用private
或protected
不允许JVM代码查看您的方法.
它是静态的,因为如果没有static
JVM代码,则需要您的类的实例来实际访问该方法.请记住,只需使用类名即可访问静态方法和字段.但是,非静态成员需要有效的活动对象才能访问它们.
它是无效的,因为main不会向调用者返回任何内容.这就像任何具有void返回类型的方法一样.
main
之所以这样,是因为Java创建者想要给它起名字.执行此方法的JVM运行时代码需要知道将启动执行的方法名称.现在,如果我把它命名为任何东西,那么JVM代码就不可能做出疯狂猜测.因此,名称标准化要求标准名称和Java创建者坚持main
.
String[]
实际上是一个字符串数组,包含您传递给程序的命令行参数.args
是参数的名称,具有讽刺意味的是,这是您可以更改为您想要的任何名称的唯一内容.
为了命名主类,我通常更喜欢像MyProjectLauncher或MyProjectBootstrap这样的名字,其中myProject是你的项目名称,如tomcat或bigben或你喜欢的任何东西.
对于3.标准惯例是:
public class MyClass{ //private members //protected members //constructors //private methods //protected methods //public methods //hashcode and equals //toString overrides }
你可以选择你需要的东西并放弃你需要的东西.如果使用变量,公共方法还包括变量的getter和setter.
对于4.在设计类时,您需要牢记代码的可伸缩性和可管理性.main
在项目开始时有一个类和几个类是很常见的,然后当它们成长为数千行的超大袋鼠时,然后重构代码来调整它.您应该做的是根据功能,服务助手或操作创建类.保存main
在不同的类分开.只是main
用来初始化一些东西,解析命令行选项和委托来启动或初始化方法,该方法执行剩余的事情以启动程序.
希望这可以帮助.