小编Cor*_*use的帖子

你会如何改进这个简单的类以更松散地耦合?

正如您在下面看到的,在构造函数中我实例化了一个验证对象,因此我可以在set方法中验证用户的电子邮件.这种架构是最佳实践还是有缺陷的?我可以避免让我的User类直接依赖于我的Validation类吗?

Class User {
  Private Email

//constructor
User() {
  Validation = new Validation
}

SetEmail(NewValue) {
  if (Validation.isEmail(NewValue)) {
    Email = NewValue
  }
}
Run Code Online (Sandbox Code Playgroud)

还有一个相关的问题:当set方法收到无效值时,什么是正确的响应?我看到2个选项

  1. 不要设置值并返回false
  2. 无论如何设置值,但为对象设置error属性.(如果设置了User.Error,我知道出了问题)

我怀疑#1是最佳实践,因为您可以确保任何对象属性的值始终有效.正确?

oop coupling

6
推荐指数
1
解决办法
541
查看次数

将单个代码库用于多个网站的最佳方式

为多个网站使用单个代码库的最佳方法是什么?

我们有多个网站上使用的验证和会话管理库.是否有保留单个副本的最佳做法,而不是必须维护每个网站的本地副本更新?

configuration

5
推荐指数
1
解决办法
1040
查看次数

保持代码和数据库引用表中的命名常量同步的最佳实践?

通常,最佳实践是使用命名常量代替幻数,但保持数据库引用表和命名常量文件同步肯定是乏味且容易出错的。是否有一些简单的方法可以使这两个信息来源保持同步,或者我是否忽略了明显的设计增强?

如果我的问题不清楚,这里有一个例子。我有一个包含 2 列的参考表:

UserStatus
----------
UserStatusID
UserStatus
Run Code Online (Sandbox Code Playgroud)

因此,该表将 UsersStatusID 1 与 UserStatus“Active”相关联。User 表依赖此表来规范化 UserStatuses。

因此,当从代码查询用户的状态时,我有两个选择:

SELECT UserStatusID FROM Users WHERE UserStatus = 1
Run Code Online (Sandbox Code Playgroud)

或者

SELECT UserStatusID FROM Users WHERE UserStatus = ACTIVE_USER_STATUS_ID
Run Code Online (Sandbox Code Playgroud)

最佳实践是使用后者,这样数字 1 的含义就很清楚了。但这意味着我必须在 UserStatus 表和代码中维护有效 UserStatusID 的完整列表。如何避免必须更新数据库引用表和常量文件?我使用的是集中式常量文件,因此只有 1 个位置需要更新代码,但是有没有办法在引入新状态时完全避免更新常量文件?

我有一个想法:安排一个脚本每天运行一次,通过查询数据库中的引用表来填充常量文件。这是最好的解决方案吗?

database

5
推荐指数
1
解决办法
1113
查看次数

转换为货币格式

是否有JavaScript的内置函数将字符串转换为货币格式?

例如

var a = '1234';
a.convertToCurrency();   // return $1,234
Run Code Online (Sandbox Code Playgroud)

UPDATE

请注意,我希望函数返回货币以包括美国逗号到组数字.

html javascript

5
推荐指数
2
解决办法
3万
查看次数

MySQL触发器无法更新触发器分配给的同一个表中的行.建议的解决方法?

MySQL目前不支持更新触发器分配给同一个表中的行,因为调用可能会递归.有没有人有一个好的解决方法/替代方案的建议?现在我的计划是调用一个存储过程,在触发器中执行我真正想要的逻辑,但我很想知道其他人是如何克服这个限制的.

编辑:根据要求提供更多背景信息.我有一个存储产品属性分配的表.插入新的父产品记录时,我希望触发器在每个子记录的同一表中执行相应的插入.这种非规范化是性能所必需的.MySQL不支持这个并抛出:

Can't update table 'mytable' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 关于MySQL论坛问题的长篇讨论基本上导致:使用存储过程,这就是我现在所使用的.

提前致谢!

mysql database triggers database-design stored-procedures

5
推荐指数
1
解决办法
2万
查看次数

任何人都可以建议一个资源,列出城市,电子邮件,电话等常见字段的建议最大长度?

我知道电子邮件地址限制为254个字符,但有没有一个资源可以概述常见字段的建议最大长度,例如电话,城市等联系信息?

似乎我工作的每个项目都只是从他们提出的极限上开始.我希望找到一个针对特定国家的规范参考.

编辑 - 更新每条评论的电子邮件maxlength.

html validation maxlength

5
推荐指数
1
解决办法
93
查看次数

ASP Classic中密码的推荐哈希值

ASP Classic中密码的最慢(因此最好)哈​​希算法是什么?

编辑:对于那些不知道的人,当哈希密码时,较慢的哈希值更快,以帮助减缓彩虹表式攻击.

EDIT2:是的,当然速度并不是哈希选择的唯一有效问题.我的问题假设所有其他条件相同,在散列密码时首选最慢的哈希方法.虽然碰撞/逆向工程当然也是一个问题,但我在这个问题中优先考虑速度,因为它可以说是比较流行的哈希算法用于密码时最关键的考虑因素.

谢谢!

security hash asp-classic

4
推荐指数
2
解决办法
1万
查看次数

如何在经典的asp中执行多线程/后台处理

我需要通过经典asp应用程序上的后台作业发送电子邮件,这样用户就不必等待慢速网络服务器完成发送电子邮件.

我知道我可以使用Ajax生成两个单独的请求,但我宁愿不需要Javascript.另外,我怀疑有更好的办法解决这个问题.想法?

email multithreading asp-classic

4
推荐指数
1
解决办法
2677
查看次数

如何在Quest Toad"浏览数据库对象"视图中将字段设置为null?

简单的问题,如果有的话,会喜欢解决方案!我假设必须有一些键盘快捷方式将插入一个null但谷歌没有帮助.

提前致谢!

database toad

3
推荐指数
1
解决办法
4805
查看次数

你如何重构一个太长的Codeigniter控制器函数?

我的控制器中有一个功能,它的长度比我想要的要长,我想重构它来调用一些离散函数,以便更容易管理.如何在Codeigniter控制器中更好地组织长函数?

我尝试过的:

我知道您可以通过使用前导下划线(_myfunc)命名它们来在控制器中创建私有函数,但是函数中的变量超出了调用控制器函数的范围.所以你必须从函数中返回所有需要的数据,这很麻烦.

这是管理复杂控制器功能的最佳选择吗?是否有一种更简单的方法,变量可以像控制器类一样全局变为标准类成员变量?

建议?提前致谢!

编辑:有人请求代码,所以我在下面为巨型控制器添加了代码.改进的一个机会是将switch语句中的逻辑移动到单独的函数(删除,预览,顺序等).但我想在此之后决定下一步.将大的验证设置代码移动到它自己的函数中真的需要一些重量,但是我应该把它移到哪里?

    function categories() {
    $this->load->library('upload');
    $this->load->model('categories_m');
    $this->load->model('products_m');
    $this->load->model('pages_m');
    $this->load->model('backoffice/backofficecategories_m');
    $data['body'] = $this->load->view('backoffice/categories/navigation_v', '', TRUE);
    $data['cat_tree'] = $this->categories_m->getCategoryTree();
    $data['page_list'] = $this->pages_m->getPageList();
    $data['category_dropdown'] = $this->load->view('backoffice/categories/category_dropdown_v',$data,TRUE);

    switch ($this->uri->segment(3)) { //display views based on parameter in URL.
    case 'delete':          
        $categoryTreeID = $this->sitewide_m->checkURLParam($this->uri->segment(4),'CategoryTree'); //if parameter is in URL, show 404 if invalid parameter is passed. Otherwise, set variable known to be safe.
        if (isset($_POST['delete'])) {
            $this->backofficecategories_m->deleteCategory($categoryTreeID);
            $data['body'] .= '<span class="error">Category Deleted.</span>';
        } else {
            $data['cat_details'] = $this->categories_m->getCategoryDetails('',$categoryTreeID);
            $data['parent_category'] = $this->categories_m->getParentCategory($categoryTreeID); …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

2
推荐指数
1
解决办法
9256
查看次数