[ 
https://issues.apache.org/jira/browse/TINKERPOP-1552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16029283#comment-16029283
 ] 

Florian Hockmann commented on TINKERPOP-1552:
---------------------------------------------

Thanks for your feedback [~jorgebg]!

I already talked about my motivation for the first two points you make above:

1) Naming convention (camel case for all GLVs vs language specific conventions)
{quote}
One design decision I took: The method names comply with .NET conventions and 
therefore use pascal case, so `g.V().has('name','marko').next()` becomes 
`g.V().Has('name','marko').Next()`. This should make it feel very natural for 
any C# programmer to work with Gremlin-CSharp. An added benefit is that it 
avoids reversed keywords in C# like `in` or `as` that would require a special 
treatment otherwise.
{quote}
So my reasoning behind this was basically that a typical project will only 
include one GLV. That is why I think that consistency within the language is 
more important than consistency across all Gremlin GLVs. When the GLVs are 
_fully developed_ a user should not have to switch between different GLVs. So 
the only place where he will encounter a different GLV is the documentation, 
but we could also solve this in the long term by adding a kind of language 
switch to the documentation so that every user can read the documentation for 
his own programming language. Having pascal case mixed in a .NET project that 
uses pascal case on the other hand looks unnatural and it would require a 
special treatment for reserved keywords which adds unnecessary confusion that 
we can avoid when we stick to the language specific convention.

But I agree that we should discuss this and it won't be difficult to change 
Gremlin-CSharp to use camel case instead if that is what we agree on.

2) Generics
{quote}
In general, Gremlin-CSharp is very close to Gremlin-Python. This also means 
that it is not type-safe, all steps simply expect a `params object[]`. It was 
very easy to generate Gremlin-CSharp this way but this should be improved in 
the future.
{quote}
Using generics is of course the way to go in the long term but it requires more 
effort to generate Gremlin-CSharp with generics and I just wanted to create a 
first version of it quickly. I actually gave it a short try with a mapping of 
Java types to .NET types but I chose to focus first on Gremlin-DotNet with the 
driver. So I completely agree with you here. I simply didn't have the time yet 
to implement this.
Maybe we should focus this issue on the first basic version of Gremlin-CSharp 
and Gremln-DotNet and create new issues for features like this that can be 
added afterwards?

3) Since the traversal is responsible for the iterating itself, implementing 
{{IEnumerator}} felt more natural to me than implementing {{IEnumerable}}. 
{{IEnumerator}} contains the methods {{Current}}, {{MoveNext}} and {{Reset}} 
which are really close to what a traversal is in TinkerPop. But if you have a 
good way to let the traversal implement {{IEnumerable}} that still fits 
together with TinkerPop's methods like {{Next}} then I would definitely support 
that contribution!

> C# Gremlin Language Variant
> ---------------------------
>
>                 Key: TINKERPOP-1552
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1552
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: language-variant
>    Affects Versions: 3.2.3
>            Reporter: Jorge Bay
>            Assignee: stephen mallette
>
> It would be nice to have a C# GLV that runs under .NET Framework 4.5+ and 
> .NET Core.
> The maven build could use the Exec Maven Plugin to exec .NET Core's [dotnet 
> test|https://www.microsoft.com/net/core#macos] command.
> Some requirements, from the mailing list (edited):
> {quote}
> 1. The GLV should keep in line with class/method names of the java API
> where possible to ensure consistency of feel across languages.
> 2. There needs to be adequate tests (we're still discussing the approach to
> testing GLVs and i think that needs to be tackled sooner than later as more
> GLVs start to come in). Those tests should produce xunit style output
> unless there is some good reason not to.
> 3. There needs to be adequate documentation (e.g. Reference docs)
> 4. The build/deploy process needs to be bound to maven which might be one of 
> the trickier bits to deal with.
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to