一个无用的功能

今天,做了一个新feature,感觉这个feature就是一个多余的东西。

背景:

1.  本产品为B/S架构,即浏览器/服务器架构。

2.  本产品分多个模块页面。管理员可以定义不用用户对不同模块的访问权限,即同一用户只能依据他的权限访问指定的几个模块;同一模块,只能被指定权限的那些用户访问。

新feature是这样

在某一模块中点击“退出”按钮 –> 到登录页面 –> 再登录进入页面 –> 进入到刚刚的模块(原来是进入首页)

感觉此功能是多余的原因是

用户点击“退出”按钮的场景重现:

1.  安全退出系统。实际上我们在退出系统时,除了银行等系统,又有几个人点击退出按钮,都是直接关掉页面的!而这些点击退出按钮退出的用户中,有几次登出后马上有登录?

2.  切换用户。我用“user1”登录产品后,再切换到“user2”登录产品。但这时候,user1的操作页面与user2没有任何关系。

在上述场景重现中,“场景1”中或许有此feature的需求,但这种需求出现的次数少之又少(还要算上大部分用户根本不会点击退出按钮);而“场景2”中,根本就没有此feature的需求。所以感觉这是一个多余的feature。

而我之后不能理解的是,公司对这个feature的实现要求居然是如此的粗糙

1.  实现中,只要求再登录进入的页面是上一次登出操作的模块页面,并没有做用户识别。这样导致的情况就是,如果我们的操作时切换用户(user1切换到user2),user2进入的也会是user1最后操作的页面;更可怕的是,user2如果没有此模块的权限时,会进入错误页面,而且此错误页面中,没有返回主页的入口!

 

在开发产品中,各种feature,多如牛毛,我们需要判断这种feature是否会用到。如果这个feature是隐藏在犄角旮旯里的,我们是否还需要做它,它的优先级是否需要调整一下?如果我们做了它,是否应该全力给它做好,至少要把“用户体验”做到比没有它的时候要好?

时间: 2024-10-08 11:44:22

一个无用的功能的相关文章

创建一个提供搜索功能的搜索类(可运行)

/* * 这段代码的主要功能是对于创建索引的后的文件, * 创建一个提供搜索功能的搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import jav

创建一个提供搜索功能来搜索类(可执行文件)

/* * 这段代码的主要功能是后创建文件的索引. * 创建一个提供搜索功能来搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.u

做一个简单下载功能的记录

给同事做一个下载的功能,将数据库关联查询后生产csv文件供下载,期间遇到的小问题,记录下. 1,数据库的关联查询 查询出来的数据结构是:一个表TABLE_A的部分数据,和TABLE_A的每条数据在TABLE_B表中的个数 mapper.xml文件 sql语句(下面的方式可能会引发一些问题,下面讲) <resultMap id="aAndCount" type="com.model.AandCount"> <result column="f

记一个网络传输功能的实现过程

写在前面的话:功能是基于C/S模型的网络传输实现,要求是服务器端可以在局域网中任何机子上运行,客户端启动后自动寻找服务器端进行连接,之后,服务器端向已经连接的客户端发送命令,客户端根据命令执行相应的操作(即发送某个约定文件夹下的所有文件),并且客户端不需要用户操作. 1.思路 首先,对于这个功能的实现思路如下,因为服务器不确定在哪个机子上,所以为了寻找到服务器端,客户端需要发送广播消息,并且为了维护客户端在线,广播消息需要实现成心跳包(即定时发送广播消息).服务器监听心跳包,如果是新加入的客户端

ado.net实现一个通知公告功能

一.建立相应的数据库,此处就不多说了,相信大家都非常了解 二.开始建立连接,建立连接首先需要有一个连接字符串,用来存储连接相关的信息,比如你连的是哪里的数据库呀,什么数据库呀,数据库名字,以及数据库用户名,密码之类的呀等等!这个链接字符串呢,一般都是直接放在配置文件(Web.config)中的,如下 然后就需要在程序中读取那个链接字符串并创建链接了: 三.链接建立后就是打开那个链接,然后执行数据库的一些操作,然后在关闭链接,具体业务操作也不同,这里把实现一个通知公告功能的数据库操作代码粘贴一下,

ASP.NET MVC + 百度富文本编辑器 + EasyUi + EntityFrameWork 制作一个添加新闻功能

本文将交大伙怎么集成ASP.NET MVC + 百度富文本编辑器 + EasyUi + EntityFrameWork来制作一个新闻系统 先上截图: 添加页面如下: 下面来看代码部分 列表页如下: 1 @{ 2 Layout = null; 3 } 4 5 <!DOCTYPE html> 6 7 <html> 8 <head> 9 <meta name="viewport" content="width=device-width&qu

栈和队列----设计一个有getMin功能的栈

设计一个有getMin功能的栈 设计一个具有getMin功能的栈,可以返回栈中的最小的元素,可以使用现有的栈的数据结构,要求pop/push/getMin操作的时间复杂度是O(1). package com.test; import java.util.Stack; /** * Created by Demrystv. */ public class GetMinStack { //定义两个栈,一个存放正常的数据,一个存放最小值 Stack<Integer> stackData = new S

设计一个有getMin功能的栈

最近在看左程云老师的程序员代码面试指南,里面都是一些很经典的算法,贴出来大家一起学习. 题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求:1.pop.push.getMin操作的时间复杂度都是O(1).2.设计的栈类型可以输用现成的栈结构. 方案1: import java.util.Stack; public class GetMinStack1 { public static class MyStack1 { private Stack<Integer

TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)

使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中嵌入TinyWeb服务,响应特定path,或输出内部运行状态,或触发某个动作,如此一来,用户(或开发者自己)通过Web浏览器即可轻松完成与项目程序的有效沟通,至少免除了进程通讯之类的东西吧,通过特殊的path(比如http://localhost:3060/hillhim)给自己的程序留一个小小的后