改写了大多数的方法，使其参数更加直观，并可验证合法性