前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发者热议GitHub代码搜索政策,最佳搜索解决方案探索

开发者热议GitHub代码搜索政策,最佳搜索解决方案探索

原创
作者头像
努力的阿飞
发布2023-12-06 16:36:51
1480
发布2023-12-06 16:36:51
举报

近日,名为koepnick 的开发者因在一台老式电脑上使用GitHub 搜索自己的存储库代码,却没有手机等设备协助验证,导致无法登录GitHub 账户,发文怒斥GitHub:如若没有登录,就无法使用搜索代码服务,与其这样不如弃用。

其实,早在今年6月,GitHub 官方便发布了一封《代码搜索现在需要登录》的公告内容,官宣除了在 GitHub.com 上全局搜索代码已经需要用户登录的政策之后,自 6 月 7 日起,这一政策将其扩展为包括存储库范围的搜索。即要访问 GitHub 的新代码搜索和代码导航的全部功能,需要创建账户或登录 GitHub.com。

而GitHub 开发者关系副总裁 Martin Woodward对于koepnick的不满,回复称这样做主要是为了帮助防止服务器被匿名的机器人请求压倒,确保可以支持 GitHub 上的开发者访问量负载。

这件发生在GitHub 上的小插曲,随即引发了大批开发者的关注和讨论。不少程序员表示开启登录操作无可厚非,“我想微软将其平台上的代码视为一种资产,因为他们可以使用它来训练可以销售的人工智能。他们不希望其他人使用他们平台上的代码做同样的事情。”但也有程序员认为GitHub要求登录以防止服务器被匿名的机器人请求压倒的设想有些天真,且间接伤害了用户体验,还有用户直接推荐了其他开源代码搜索工具取而代之。

如今,需要开发人员手动编写代码的机会少之又少,很多程序员往往选择通过搜索引擎寻找函数,并且在无数相似的函数中搜索和筛选,比较不同函数的优劣,再选择最合适的函数进行调用,但这种行为不仅耗费大量的时间和精力,而且严重依赖于开发人员个人的能力。诚如GitHub新的代码搜索比普通的搜索引擎有更多的内容,将其开启登录账户的举措也确实影响了一部分用户体验,无形中将用户推到其他代码工具中去。

在中国,飞算SoFlu软件机器人推出的专门为开发者设计的函数AI生成器,可以替代搜索引擎,根据开发者的需求提供直接可用的函数解决方案。

FuncGPT是一个专门为开发者设计的函数AI生成器,它接收自然语言输入,然后输出可以直接使用的函数解决方案。FuncGPT(慧函数)的强大之处在于它可以理解自然语言,这意味着你不需要具备很强的编程知识或熟悉各种函数和方法。只需向FuncGPT(慧函数)描述你的问题,它就会为你提供相应的解决方案。这大大降低了编程的门槛,让更多的开发者能够快速找到适合自己的函数。

作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库,从而提高开发者的编码效率。

以下是一个通过在FuncGPT(慧函数)中输入指令【函数功能:Map批量赋值

参数1:参数名称:target;参数类型:Map;参数描述:Map对象

参数2:参数名称:keyAndValue;参数类型:Object;参数描述:key值与value值,先后对应(key=2n,value=2n+1)】的示例:

代码语言:javascript
复制
// 类名:MapUtil
// 函数名:bulkAssignValues
// 函数功能:批量将键值对赋值给Map对象
// POM依赖包:
// <dependency>
//     <groupId>org.apache.commons</groupId>
//     <artifactId>commons-lang3</artifactId>
//     <version>3.12.0</version>
// </dependency>
import org.apache.commons.collections4.MapUtils;
import java.util.Map;
public class MapUtil {
    /**
     * 批量将键值对赋值给Map对象
     * @param target 目标Map对象
     * @param keyAndValue 键值对,先后对应(key=2n,value=2n+1)
     */
    public static void bulkAssignValues(Map<Object, Object> target, Object... keyAndValue) {
        if (target == null) { // 检查目标Map是否为空
            throw new IllegalArgumentException("Target Map cannot be null"); // 抛出异常,目标Map不能为空
        }
        if (keyAndValue == null || keyAndValue.length % 2 != 0) { // 检查键值对参数是否为空或键值对个数是否为偶数
            throw new IllegalArgumentException("Invalid key-value pairs"); // 抛出异常,键值对参数不合法
        }
        for (int i = 0; i < keyAndValue.length; i += 2) {
            Object key = keyAndValue[i];
            Object value = keyAndValue[i + 1];
            target.put(key, value); // 将键值对赋值给目标Map对象
        }
    }
}
// 函数示例
// 批量将键值对赋值给Map对象示例
// 入参:target,目标Map对象
// 入参:keyAndValue,键值对,先后对应(key=2n,value=2n+1)
// 调用示例:
// Map<String, Integer> targetMap = new HashMap<>();
// MapUtil.bulkAssignValues(targetMap, "key1", 1, "key2", 2, "key3", 3);
// System.out.println(targetMap);
// 输出结果:例如,将键值对赋值给Map对象,结果为:{key1=1, key2=2, key3=3}
// 则输出结果为:{key1=1, key2=2, key3=3}

以上由FuncGPT(慧函数)生成的Java代码定义了一个名为MapUtil的类,其中包含一个名为bulkAssignValues的静态方法。该方法的功能是批量将键值对赋值给Map对象。

依赖包: 代码中包含一个Apache Commons Lang的依赖,版本是3.12.0。Apache Commons Lang是Apache软件基金会ASF的一个子项目,为Java提供丰富的组件库。MapUtils类来自于Apache Commons Collections,它提供了一些操作和处理Map的实用方法。

函数设计: bulkAssignValues函数接受两个参数,一个目标Map对象和一个键值对数组。函数首先检查目标Map对象是否为空,如果为空则抛出异常。接着检查键值对数组是否为空或长度是否为偶数,如果不满足条件则抛出异常。最后,通过循环遍历键值对数组,将每个键值对依次添加到目标Map对象中。

可读性: 代码的注释和变量命名都是清晰明了的,易于理解。函数的设计和命名也符合Java编码规范。

性能: 该函数没有进行任何不必要的操作,直接将输入的键值对添加到目标Map中。因此,它的性能是高效的。

错误处理: 函数在遇到非法参数时抛出IllegalArgumentException异常,符合Java的异常处理规范。

综上,在秒级支持所有类型函数创建的基础上,由于FuncGPT(慧函数)是经过代码编写最佳实践和大规模机器联合训练,对Java语法有深入的学习和理解,故生成的函数代码质量高,符合行业规范,避免了常见的代码错误和低效,相较于搜索引擎收到的demo级的代码案例,针对不同的定制化的需求场景,FuncGPT(慧函数)为开发人员提供相对精准的代码方案基础上,开发人员往往只需稍作调整,即可生成满足开发人员特定的功能需求。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档